Như tất cả các câu trả lời cho đến nay dựa vào đó bạn biết được định danh bạn muốn xóa tôi muốn gửi giải pháp sau đó xóa TẤT CẢ phím hiện cho ứng dụng (iOS chỉ)
-(void)resetKeychain {
[self deleteAllKeysForSecClass:kSecClassGenericPassword];
[self deleteAllKeysForSecClass:kSecClassInternetPassword];
[self deleteAllKeysForSecClass:kSecClassCertificate];
[self deleteAllKeysForSecClass:kSecClassKey];
[self deleteAllKeysForSecClass:kSecClassIdentity];
}
-(void)deleteAllKeysForSecClass:(CFTypeRef)secClass {
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
[dict setObject:(__bridge id)secClass forKey:(__bridge id)kSecClass];
OSStatus result = SecItemDelete((__bridge CFDictionaryRef) dict);
NSAssert(result == noErr || result == errSecItemNotFound, @"Error deleting keychain data (%ld)", result);
}
Swift 2.2 phiên bản:
func resetKeychain() {
self.deleteAllKeysForSecClass(kSecClassGenericPassword)
self.deleteAllKeysForSecClass(kSecClassInternetPassword)
self.deleteAllKeysForSecClass(kSecClassCertificate)
self.deleteAllKeysForSecClass(kSecClassKey)
self.deleteAllKeysForSecClass(kSecClassIdentity)
}
func deleteAllKeysForSecClass(secClass: CFTypeRef) {
let dict: [NSString : AnyObject] = [kSecClass : secClass]
let result = SecItemDelete(dict)
assert(result == noErr || result == errSecItemNotFound, "Error deleting keychain data (\(result))")
}
Swift phiên bản 3
func resetKeychain() {
deleteAllKeysForSecClass(kSecClassGenericPassword)
deleteAllKeysForSecClass(kSecClassInternetPassword)
deleteAllKeysForSecClass(kSecClassCertificate)
deleteAllKeysForSecClass(kSecClassKey)
deleteAllKeysForSecClass(kSecClassIdentity)
}
func deleteAllKeysForSecClass(_ secClass: CFTypeRef) {
let dict: [NSString : Any] = [kSecClass : secClass]
let result = SecItemDelete(dict as CFDictionary)
assert(result == noErr || result == errSecItemNotFound, "Error deleting keychain data (\(result))")
}
@ serge-k, câu hỏi đó đã được hỏi vào năm 2012 trong khi điều này là vào năm 2011. –
Đúng, chỉ cần tìm câu trả lời khác được tìm thấy ở đây http://stackoverflow.com/questions/14086085/how-to-delete-all -keychain-items-accessible-to-an-app là một giải pháp cập nhật hơn. Tôi chỉ có thể để nó như một liên kết, tôi đã xóa cờ trùng lặp. –