4

有没有办法可以清除我的 iPhone 应用程序的钥匙串?清除命令或所有键的列表,以便我可以自己删除它们。

4

1 回答 1

9

没有清除命令之类的东西。
无论如何,由于您的应用程序可以访问的钥匙串专用于您的应用程序,因此只有您可以轻松跟踪您在其中写入的内容并将其删除。

您可以实现自己的清除方法,该方法将简单地一一删除您可以保存在钥匙串中的所有可能数据类型。以下是我清除所有 GenericPassword 条目的方法:

- (BOOL)deleteKeychainData
{
    /* delete custom data */
    NSMutableDictionary *searchData = [NSMutableDictionary new];
    [searchData setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
    [searchData setObject:kTagKeychainService forKey:(id)kSecAttrService];

    OSStatus statusData = SecItemDelete((CFDictionaryRef)searchData);
    [searchData release];

    CHECK_CONDITION1(statusData == errSecSuccess
                     || statusData == errSecItemNotFound,
                     @"Error while deleting keychain data, OSStatus == %d", statusData);

    /* delete assymetric keys*/
    return [self deleteKeyPair];
}

所以你需要做的是为所有可能的kSecClass值调用这个方法。
请注意,不同的数据类型需要设置不同的字典标志。

问候

于 2010-12-30T18:17:58.493 回答