2010-03-08 158 views
-5

我无法使KeychainItemWrapper(Apple示例)正常工作。我已经将KeychainItemWrapper文件添加到了我的项目中,并且在手机上运行时,SecItemAdd引发了一个异常,表示一个或多个参数无效(结果代码-50)。触发SecItemAdd的代码如下:iPhone钥匙扣

KeychainItemWrapper* wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"something" accessGroup:nil]; 
[wrapper setObject:@"this is my password" forKey:@"password"]; 
NSLog(@"Password: %@", [wrapper objectForKey:@"password"]); 

出了什么问题?

的代码可以在http://developer.apple.com/iphone/library/samplecode/GenericKeychain/index.html

+3

13日的问题 - 你会* *现在接受任何? – Trick 2010-03-08 13:21:22

+0

你也应该把它分解成几个问题。 SO系统无法在单个线程中追踪多个问题的多个答案。你希望人们回答4个独立的理论问题以及调试你的代码。这至少有5个单独的答案,(1)大多数人没有时间或知识来回答所有5,(2)没有人会得到回答,只回答5个答案。不是说你看起来接受答案。 – TechZen 2010-03-08 15:22:25

回答

9

我遇到了同样的问题被发现。你不能在字典中放入任意键,你需要使用SecItemAdd可以理解的定义好的键。

试试这个:

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"password" accessGroup:nil]; 
[wrapper setObject:@"this is my password" forKey:(id)kSecValueData]; 
NSLog(@"password: [%@]", [wrapper objectForKey:(id)kSecValueData]); 
[wrapper release];