Appleのサンプルコードで提供されているKeyChainItemWrapperクラスを使用して、認証トークンをキーチェーンに保存しています。
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier"JetTaxiApp_AuthToken" accessGroup:nil];
しかし、値をキーチェーンに設定しようとすると、奇妙な例外が発生します
[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];
キャッチされなかった例外「NSInternalInconsistencyException」が原因でアプリを終了しています。理由:「キーチェーンアイテムを追加できませんでした。」
キーチェーンはまだ存在していません(この呼び出しの時点で)この例外の原因は何ですか?
標準のキーを使用する必要があるため、ここでは@"auth_token"
間違っています。
この目的で使用できるキーと各キーの可能な値は、「キーチェーンサービス定数」セクションにリストされています。
ソース、有効な定数のリスト: キーチェーンサービスリファレンス
たとえば、次を使用できます。
[_authenticationTokenKeychain setObject:authenticationToken forKey:(__ bridge NSString *)kSecValueData];
[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];
上記のコードスニペットの場合、キーパラメータはSDKから提供されたキーのみを使用できます。あなたはSecItem.hですべてを見つけることができます