清除iPhone钥匙扣

时间:2010-05-27 17:10:16

标签: iphone keychain

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

1 个答案:

答案 0 :(得分: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 值调用此方法。
注意,不同的数据类型需要设置不同的字典标记。

问候