9

[keychain removeObjectForKey:theKey]キーチェーンにいくつかの情報を保存しましたが、すべてのキーに対して行うのではなく、すべてのアイテムを削除する必要がある場合があります。

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

return !SecItemDelete((CFDictionaryRef)spec);

代わりは?

私はそれを試しましたが、うまくいきましたが、正しいことをしているかどうかはわかりませんか?

4

2 に答える 2

5

私のアプリでは、この行を使用してキーチェーンをクリアしています:

[[[KeychainItemWrapper alloc] initWithIdentifier:@"my_key" accessGroup:nil] resetKeychainItem]
于 2013-03-06T11:27:52.007 に答える
0

あなたがしていることは正しいと思います。実際、必要に応じて、クエリで kSecAttrService パラメータを避けることができます。一方、SecItemDelete は、トランザクションに関するより詳細な情報を確認できる OSStatus 値を返します。

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

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

    return NO;

可能なステータス値のコードと意味は次のとおりです。

于 2013-03-26T19:30:52.127 に答える