我的密钥链一直有一些问题,我想主要是因为我第一次使用它时不知道它是如何工作的,我尝试了几种将数据和字符串密码等添加到我的密钥链中的变体,认为当我从设备中删除应用程序时,它会清除密钥链.我现在知道这不是钥匙链的工作方式,所以我希望我能得到一些帮助,清理我的钥匙链中的垃圾。
问题是,我现在正试图将一些信息传递给我的密钥链,但是收到了以下错误
*** Assertion failure in -[KeychainItemWrapper writeToKeychain], /Users/imac/Documents/Iphone applications/Keystone/Keystone/KeychainItemWrapper.m:268
2013-07-23 11:07:46.086 Keystone[2769:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'这个错误发生在我试图将一些信息传递到我声明的密钥链包装器中时,如下面的代码所示。
[keychainItem setObject:@"somestringhere" forKey: (__bridge id)kSecAttrService];我认为代码实际上很好,因为我认为我的密钥链中的当前垃圾正在阻止我正确地将新项添加到密钥链中。我像这样实现包装器
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"gena" accessGroup:@"KeyStone.com.WHATWHAT.GenericKeychainSuite"];我可以在我的调试区域看到这个。

如您所见,KeyChainItemData和genericPasswordQuery已经在我的密钥链中,有6-5个对象?!真奇怪。因此,我试图使用以下代码清除我的密钥链.
[keychainItem resetKeychainItem];唯一的问题是这对我没有任何帮助。因此,我想知道我可能需要做些什么来删除这些KeyChainItemData和genericPasswordQuery条目,这些条目似乎在我的密钥链中,阻止了我添加正确的条目。
任何帮助都将不胜感激。
更新:因此,在我声明KeychainItemWrapper时,当所有这些值都显示在我的调试区域时,进行进一步的研究,但是在没有对其进行任何密钥链开发的不同设备上尝试相同的代码之后,它仍然显示了相同的值。所以我想它不在设备上它一定是别的什么东西..。希望这有道理..。我将继续设法找到解决办法。
发布于 2013-07-23 15:39:31
在useyourloaf.com上一步一步地看这个简短的例子
它涵盖了简单的iPhone密钥链访问。它有从密钥链中搜索、创建、更新和删除项目的示例。
你可能还想看看苹果的开发者密钥链服务参考。你要找的是SecItemDelete。
发布于 2013-07-25 02:28:31
我建议不要使用KeychainItemWrapper。在为多个项目使用KeychainItemWrapper之后,我一直在寻找多个没有考虑到的bug和边缘案例,所以我创建了自己的更简单的包装器来访问密钥链https://github.com/reidmain/FDKeychain
它的工作原理非常类似于NSDictionary,只有setValue:和objectForKey:方法。
https://stackoverflow.com/questions/17799058
复制相似问题