我目前有这个代码将信息存储到iPhone钥匙串中。如果有一个同名的东西已经存储在那里以防止双重存储,并告诉我这是否是用户第一次使用该应用程序,我如何查看一个简单的if语句?
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil];
[keychain setObject:username.text forKey:(__bridge id)(kSecAttrAccount)];
[keychain setObject:password.text forKey:(__bridge id)(kSecValueData)];
keychain = nil;
usernameAll = [keychain objectForKey:(__bridge id)kSecAttrAccount];
passwordAll = [keychain objectForKey:(__bridge id)kSecValueData];
答案 0 :(得分:3)
您不会导致双重存储。您将覆盖任何现有值。
创建钥匙串对象,然后调用objectForKey:
。如果结果为nil
,则表示该密钥没有现有值。
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil];
if ([keychain objectForKey:(__bridge id)(kSecAttrAccount)]) {
// existing value
} else {
// no existing value
}
第一次检查用户是否正在使用应用时,通常是在第一次使用该应用时将值写入NSUserDefaults
。启动时,将检查此值。如果值存在,则不是第一次运行。如果您需要此检查以便在删除应用程序并重新安装后继续使用,请使用钥匙串代替NSUserDefaults
来存储此标记。