let secItemClasses = [kSecClassGenericPassword,
kSecClassInternetPassword,
kSecClassCertificate,
kSecClassKey,
kSecClassIdentity]
for secItemClass in secItemClasses {
let dictionary = [kSecClass as String:secItemClass]
SecItemDelete(dictionary as CFDictionary)
}
import Foundation
import Security
public class Keychain: NSObject {
public class func logout() {
let secItemClasses = [
kSecClassGenericPassword,
kSecClassInternetPassword,
kSecClassCertificate,
kSecClassKey,
kSecClassIdentity,
]
for itemClass in secItemClasses {
let spec: NSDictionary = [kSecClass: itemClass]
SecItemDelete(spec)
}
}
}
let secItemClasses = [kSecClassGenericPassword,
kSecClassInternetPassword,
kSecClassCertificate,
kSecClassKey,
kSecClassIdentity]
for secItemClass in secItemClasses {
let query: NSDictionary = [
kSecClass as String: secItemClass,
kSecAttrSynchronizable as String: kSecAttrSynchronizableAny
]
SecItemDelete(query)
}
8条答案
按热度按时间2guxujil1#
为所有类执行此操作
目标C:
斯威夫特:
yquaqz182#
Xamarin iOS版本(MonoTouch)的accepted answer上 * 如何删除所有钥匙串项目可访问的应用程序 * 如下:
如果您想确保确实删除了记录,您可以在开发过程中使用以下代码检查特定类型的KeyChain中前后的项目数:
nimxete23#
我在《斯威夫特》中改写了戴杰-詹的回答:
yvt65v4c4#
快速版本
用法:
bcs8qyzn5#
感谢Daij-Djan,我得到了这个解决方案:
relj7zay6#
不幸的是,这个问题的所有答案似乎都过时了(自iOS 7.0+以来),因为它们不会删除设置了
kSecAttrSynchronizable
标志的钥匙串条目(允许通过iCloud同步到其他设备)。要删除这样的条目,crucible需要向删除查询添加一个条目,指定
kSecAttrSynchronizable: kSecAttrSynchronizableAny
:快速版本:
unftdfkk7#
你可以看看实用程序文件夹中的钥匙链访问应用程序。如果你启动应用程序并点击“所有项目”,它应该会显示你用这台特定计算机创建的所有项目。开发人员的通常以com开头。
tuwxkamq8#
当你使用Mac作为目标进行单元测试时,使用
kSecClassCertificate
清除所有证书时要小心,因为这会清除你的开发证书。你可以简单地撤销现有的证书,但在CI/CD管道中这是行不通的。