从钥匙串中删除密码

我们只需要一件事就是从 Keychain 中删除一个项目:一个 CFDictionary,其中包含描述要删除的项目的属性。任何与查询字典匹配的项目都将被永久删除,因此如果你只想删除单个项目,请确保特定于你的查询。和往常一样,我们可以在 Objective-C 中使用 NSDictionary,或者在 Swift 中我们可以使用 Dictionary 然后转换为 CFDictionary

在该上下文中,查询字典专门包括用于描述项目是什么的类密钥以及用于描述关于该项目的信息的属性。不允许包含诸如 kSecMatchCaseInsensitive 之类的搜索限制。

迅速

var dict = [String : AnyObject]()
dict[kSecClass as String] = kSecClassGenericPassword
// Label
dict[kSecAttrLabel as String] = "com.me.myapp.myaccountpassword" as CFString
// Username
dict[kSecAttrAccount as String] = "My Name" as CFString

现在我们可以简单地删除它:

迅速

let status = SecItemDelete(dict as CFDictionary)

SecItemDelete 返回 OSStatus。结果代码在此处描述。