0

我像这样使用钥匙串:

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
[keychain setObject:responseObject[@"TOK"] forKey:CFBridgingRelease(kSecAttrAccount)];

并希望像这样删除(null值):

[keychain setValue:nil forKey:CFBridgingRelease(kSecAttrAccount)];

但是,我只看到这个:

setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key acct.

同样明智的是,当我使用它时:

[keychain setNilValueForKey:CFBridgingRelease(kSecAttrAccount)];

我明白了:

setNilValueForKey]: could not set nil as the value for the key acct.

我正在使用苹果的 KeychainItemWrapper,我将如何正确执行此操作?

4

1 回答 1

2

通常要删除一个项目,生成通常用来获取它的查询,然后使用“SecItemDelete”。

像这样 -

    NSMutableDictionary *query = [self getQueryForKey:key];
OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query);
if( status != errSecSuccess) {
    ...
}

如果您使用的是 keyChainWrapper,您可以这样做 -

    KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
    [keychain resetKeychainItem];
于 2014-12-01T16:16:51.253 回答