我正在使用钥匙扣:
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.
我正在使用Apple的KeychainItemWrapper,我该如何正确地做到这一点?
答案 0 :(得分: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];