3

現在、このコードで情報を 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];
4

1 に答える 1

4

二重保管は発生しません。既存の値を上書きします。

キーチェーン オブジェクトを作成し、 を呼び出しますobjectForKey:。結果が である場合nil、キーに既存の値がないことがわかります。

KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil];
if ([keychain objectForKey:(__bridge id)(kSecAttrAccount)]) {
    // existing value
} else {
    // no existing value
}

ユーザーがアプリを初めて使用しているかどうかを確認するには、通常、アプリを初めて使用するときに値を書き込みますNSUserDefaults。起動時に、この値がチェックされます。値が存在する場合、それは最初の実行ではありません。アプリの削除と再インストール後もこのチェックが必要な場合は、NSUserDefaultsこのフラグを保存する代わりにキーチェーンを使用してください。

于 2013-03-20T03:33:26.300 に答える