keychainitemwrapper本地持久化

Keychain优点:

① 保存的信息不会因App被删除而丢失,在用户重新安装App后依然有效(需要导入Security.framework)
② 不同App共享KeyChain数据

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
NSString * userName = @"Name";   //用户名
NSString * passWord = @"123456"; //密码

KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc]initWithIdentifier:@"UserKeychain"accessGroup:nil];

//必须设置kSecAttrService,KeyChain内部以kSecAttrAccount与kSecAttrService作为唯一钥匙串标识,两个都必须设置才行
[keychain setObject:@"UserKeychain" forKey:(id)kSecAttrService];

//保存用户名
[keychain setObject:userName forKey:(id)kSecAttrAccount];

//保存密码
[keychain setObject:passWord forKey:(id)kSecValueData];

取值,取出已保存的用户名、密码

1
2
3
4
5
6
7
8
9
10
11
KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc]initWithIdentifier:@"UserKeychain"accessGroup:nil];

[keychain setObject:@"UserKeychain" forKey:(id)kSecAttrService];

NSString * userName = [keychain objectForKey:(id)kSecAttrAccount];

NSString * password = [keychain objectForKey:(id)kSecValueData];

// 打印数据
NSLog(@"keychain userName = %@",userName);
NSLog(@"keychain password = %@",password);