获取数据时:
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
NSString *user = [[NSUserDefaults standardUserDefaults] valueForKey:@"ACC"];
NSString *pass = [keychain objectForKey:CFBridgingRelease(kSecAttrAccount)];
保存数据时:
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"LoginData" accessGroup:nil];
[[NSUserDefaults standardUserDefaults] setObject:[jsonResult objectForKey:@"user"] forKey:@"ACC"];
[keychain setObject:[jsonResult objectForKey:@"token"] forKey:CFBridgingRelease(kSecAttrAccount)];
我正在重复使用我几年前使用过的代码。但是现在我正在努力解决部分问题无法正常工作的问题。
对于它的价值,我正在使用KeyChainItemWrapper版本:1.2(Objective-c)
[[NSUserDefaults standardUserDefaults] valueForKey:@"ACC"]
工作正常,并已保存,但是为CFBridgingRelease(kSecAttrAccount)
存储值不会保存。运行获取代码时,在保存代码之后,我只获得(null)
。
我正在使用xcode 8.3.1和模拟器版本10,运行iPhone 7版本10.3。
最新的IDE版本& iOS版本是唯一已经改变的东西
答案 0 :(得分:0)
对于将数据保存和检索到钥匙链,请确保使用 Apple 默认的 ARC 版本。
保存到钥匙串:-
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"Your identifire" accessGroup:nil];
[keychainItem setObject:appleUserId forKey:(id)CFBridgingRelease(kSecAttrAccount)];
从钥匙链中检索数据:-
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"Your identifire" accessGroup:nil];
NSString *savedUserID = [keychainItem objectForKey:(id)CFBridgingRelease(kSecAttrAccount)];
有关更多信息,请查看官方链接:
https://developer.apple.com/documentation/foundation/1587932-cfbridgingrelease