是否可以删除iOS钥匙串中的帐户项的密码而不删除整个项目?

时间:2014-01-29 16:56:22

标签: ios objective-c keychain

我一直在学习如何使用Keychain存储用户名和密码组合。我有以下方法称为“清除密码”,但它似乎删除了帐户名称的整个钥匙串项目:

-(OSStatus)clearPassword{

 NSDictionary *query =  @{ (__bridge  id)kSecClass :  (__bridge  id)kSecClassGenericPassword,
                          (__bridge  id)kSecAttrAccount : self.accountName};


CFDictionaryRef queryRef = (__bridge CFDictionaryRef)query;
OSStatus status =  SecItemDelete(queryRef);
NSAssert(status == errSecSuccess || errSecItemNotFound, @"Unable to delete keychain item");

return status;


}

是否可以删除JUST特定帐户名的密码,这样我就可以在没有密码的密钥链中保留帐户名,这样当用户登录应用程序时,我可以检查他们输入的帐户名是否是在钥匙串已经?如果是这样,我如何制定查询词典来完成这个?

1 个答案:

答案 0 :(得分:2)

我同意Krumelur的评论。当我在过去完成此操作时,我已将最后签名的用户名存储在NSUserDefaults中。如果该用户名在钥匙串中有一个条目,则该用户将自动登录。如果没有,则提示用户登录并将其凭据存储在钥匙串中,直到他们退回。