如何从iOS钥匙串中删除KeyChainItemData和genericPasswordQuery项目

我一直在使用我的钥匙串,我认为主要是因为我没有意识到它是如何工作的,当我第一次使用它时,我尝试了几种将数据和字符串密码等添加到我的钥匙串中的变体,认为当我删除应用程序时从我的设备中,它可以清除钥匙扣......我现在知道这不是钥匙扣的工作方式,所以希望我可以帮助清理钥匙链中的垃圾。

事情是我现在试图将一些信息传递给我的钥匙链,但我收到以下错误

*** 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.'

当我尝试将一些信息传递到我已经声明的Keychainwrapper中时,会发生此错误,如下面的代码所示。

[keychainItem setObject:@"somestringhere" forKey: (__bridge id)kSecAttrService];

我认为代码实际上很好,因为我认为我的钥匙串中的当前垃圾阻止我正确地将新项目添加到钥匙串。 我实现这样的包装

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"gena" accessGroup:@"KeyStone.com.WHATWHAT.GenericKeychainSuite"];

我可以在我的调试区域看到这一点。

在这里输入图像描述

正如你所看到的KeyChainItemDatagenericPasswordQuery已经在我的钥匙串与6 - 5的对象?! 奇怪的。 从那我试图清除我的钥匙串使用下面的代码...

[keychainItem resetKeychainItem];

唯一的问题是,这无助于我。 所以我想知道我可能需要做些什么才能删除这些KeyChainItemDatagenericPasswordQuery条目,这些条目似乎存在于我的钥匙串中,从而无法添加正确的条目。

任何帮助将不胜感激。

更新:因此,当我在声明KeychainItemWrapper的时候进行进一步的研究时,当所有这些值都显示在我的调试区域中时,但是在不同的设备上尝试了相同的代码之后,它仍然显示相同的代码值。 所以,我认为它不是在设备上它是其他东西...希望这是有道理的..我会继续努力寻找解决方案。


在useyourloaf.com上查看这个简短的步骤示例

它涵盖简单的iPhone钥匙串访问。 它具有搜索,创建,更新和删除钥匙串中物品的示例。

您可能还想看看Apple开发人员钥匙串服务参考。 您正在寻找的命令是SecItemDelete。


我建议不要使用KeychainItemWrapper。 在使用KeychainItemWrapper处理多个项目后,我一直发现多个错误和边缘情况没有被考虑,所以我创建了我自己的更简单的包装来访问Keychain https://github.com/reidmain/FDKeychain

它的工作原理与NSDictionary非常相似,只是setValue:和objectForKey:方法。

链接地址: http://www.djcxy.com/p/83277.html

上一篇: how to delete KeyChainItemData and genericPasswordQuery items from iOS keychain

下一篇: iOS Keychain occasionally return empty string