web-dev-qa-db-ja.com

KeyChainItemWrapperを使用してKeyChainにキーを保存する

Appleのサンプルコードで提供されているKeyChainItemWrapperクラスを使用して、認証トークンをキーチェーンに保存しています。

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

しかし、値をキーチェーンに設定しようとすると、奇妙な例外が発生します

[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];

キャッチされなかった例外「NSInternalInconsistencyException」が原因でアプリを終了しています。理由:「キーチェーンアイテムを追加できませんでした。」

キーチェーンはまだ存在していません(この呼び出しの時点で)この例外の原因は何ですか?

15
Oksana

標準のキーを使用する必要があるため、ここでは@"auth_token" 間違っています。

この目的で使用できるキーと各キーの可能な値は、「キーチェーンサービス定数」セクションにリストされています。

ソース、有効な定数のリスト: キーチェーンサービスリファレンス

たとえば、次を使用できます。

[_authenticationTokenKeychain setObject:authenticationToken forKey:(__ bridge NSString *)kSecValueData];

33
[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];  

上記のコードスニペットの場合、キーパラメータはSDKから提供されたキーのみを使用できます。あなたはSecItem.hですべてを見つけることができます

0
Ericpoon