我使用KeychainItemWrapper
进行钥匙串存储。当我使用forkey:(__bridge id)kSecAttrAccount
时,一切正常。但是当我使用forKey:(__bridge id)(kSecValueData)]
应用时崩溃会在控制台*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'
中显示此消息
- (IBAction)saveOne:(id)sender
{
// save edits
keychainItemWrapper1 = [[KeychainItemWrapper alloc] initWithIdentifier:@"one" accessGroup:nil];
[keychainItemWrapper1 setObject:[userOne text] forKey:(__bridge id)(kSecValueData)];
keychainItemWrapper2 = [[KeychainItemWrapper alloc] initWithIdentifier:@"two" accessGroup:nil];
[keychainItemWrapper2 setObject:[userTwo text] forKey:(__bridge id)kSecValueData];
keychainItemWrapper3 = [[KeychainItemWrapper alloc] initWithIdentifier:@"three" accessGroup:nil];
[keychainItemWrapper3 setObject:[userThree text] forKey:(__bridge id)kSecValueData];
}
-(IBAction)reset:(id)sender{
keychainItemWrapper1 = [[KeychainItemWrapper alloc] initWithIdentifier:@"one" accessGroup:nil];
[keychainItemWrapper1 resetKeychainItem];
keychainItemWrapper2 = [[KeychainItemWrapper alloc] initWithIdentifier:@"two" accessGroup:nil];
[keychainItemWrapper2 resetKeychainItem];
keychainItemWrapper3 = [[KeychainItemWrapper alloc] initWithIdentifier:@"three" accessGroup:nil];
[keychainItemWrapper3 resetKeychainItem];
}
任何人都可以帮助我。
提前致谢。
答案 0 :(得分:0)
您可能需要在KeychainItemWrapper类中查看 - (NSMutableDictionary *)dictionaryToSecItemFormat:(NSDictionary *)dictionaryToConvert
方法。具体来说,请查看您用于写入钥匙串的NSMutableDictionary。您是否将密钥设置为在SecItemAdd或SecItemUpdate函数中使用的字典的kSecValueData?如果没有,那可能就是问题所在。