2013-03-06 295 views
9

我在鑰匙串中存儲了一些信息,並且有一種情況是我需要刪除所有項目,而不是對所有鍵執行[keychain removeObjectForKey:theKey]我這樣做:正確刪除(清除)iOS應用程序的所有鑰匙串數據的方法

NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(id)kSecClassGenericPassword, kSecClass, 
         [self serviceName], kSecAttrService, nil]; 

return !SecItemDelete((CFDictionaryRef)spec); 

改爲?

我試了一下,它的工作,只是不知道如果我做正確的事情?

回答

5

在我的應用我用這條線來清除我的鑰匙串:

[[[KeychainItemWrapper alloc] initWithIdentifier:@"my_key" accessGroup:nil] resetKeychainItem] 
+0

那是什麼標識?它是kSecAttrService嗎? – hzxu 2013-03-07 04:06:14

+0

如果您需要在應用程序中處理多個KeychainItem,您可以選擇任何標識符。 – Kirualex 2013-03-08 14:26:52

0

我相信你正在做的事情是正確的,事實上,你可以避開kSecAttrService參數查詢,如果你想要的。另一方面,SecItemDelete返回一個OSStatus值,您可以檢查有關該事務的更多詳細信息。

NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(id)kSecClassGenericPassword, kSecClass, nil]; 

    OSStatus status = SecItemDelete((CFDictionaryRef)spec); 
    if (status == errSecSuccess) 
     return YES; 

    return NO; 

Here are the codes和意義的可能的狀態值

相關問題