2013-03-06 5 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

+0

アプリケーションで複数のKeychainItemを処理する必要がある場合は、任意の識別子を選択できます。 – Kirualex

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と意味は、その識別子は何

関連する問題