如何检查iPhone钥匙串中是否存有东西?

时间:2013-03-20 03:24:50

标签: iphone sdk keychain

我目前有这个代码将信息存储到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];

1 个答案:

答案 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来存储此标记。