8

我正在尝试在 iOS 中写入钥匙串,并且每当我在设备上进行测试时尝试写入钥匙串时,我都会收到 -50 错误代码作为 SecItemAdd 的结果。

我首先尝试自己实现这样的机制,在多次报错后,我尝试了 KeychainItemWrapper,以为我做错了什么。但是使用 KeychainItemWrapper 也给了我相同的错误代码:(KeychainItemWrapper 的 ARCified 版本,https ://gist.github.com/dhoerl/1170641 )

line 305: NSAssert( result == noErr, @"Couldn't add the Keychain Item." );

结果是-50,与我自己尝试时得到的结果相同。这是我使用包装器的方式(访问组是我的应用程序 ID)

keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"data" accessGroup:@"my.app.identifier"];
purchasedPacks = [keychain objectForKey:@"packs"];
if(purchasedPacks == nil){
    [keychain setObject:[[NSMutableArray alloc] init] forKey:@"packs"];
}

我首先认为可能设置一个可变数组会是一个问题,但尝试一个字符串也以同样的方式失败。问题的原因可能是什么?

谢谢,坎。

4

1 回答 1

4

您不能对[keychain setObject: forKey:]. 以下将起作用:

[keychain setObject:[[NSMutableArray alloc] init]
          forKey:(__bridge id)kSecValueData]

Apple 文档中充满了有关这方面的信息。

于 2013-10-21T09:19:27.667 回答