3

キーチェーンに問題がありました。主に、最初に使用したときにどのように機能するかを知らなかったためだと思います。アプリを削除したときのことを考えて、キーチェーンにデータや文字列のパスワードなどを追加するいくつかのバリエーションを試しました私のデバイスからはキーチェーンがクリアされます...これがキーチェーンの仕組みではないことがわかったので、現在キーチェーンにあるジャンクをクリアする助けが得られることを望んでいました.

問題は、キーチェーンに情報を渡そうとしていますが、次のエラーが表示されることです

*** Assertion failure in -[KeychainItemWrapper writeToKeychain], /Users/imac/Documents/Iphone applications/Keystone/Keystone/KeychainItemWrapper.m:268
2013-07-23 11:07:46.086 Keystone[2769:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'

このエラーは、以下のコードに示すように、宣言したキーチェーンラッパーに情報を渡そうとすると発生します。

[keychainItem setObject:@"somestringhere" forKey: (__bridge id)kSecAttrService];

キーチェーンの現在のジャンクが新しいアイテムをキーチェーンに正しく追加できないと思うので、コードは実際には問題ないと思います。このようにラッパーを実装します

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"gena" accessGroup:@"KeyStone.com.WHATWHAT.GenericKeychainSuite"];

これはデバッグ領域で確認できます。

ここに画像の説明を入力

ご覧のとおり、 KeyChainItemDatagenericPasswordQueryは既に 6 ~ 5 個のオブジェクトを持つキーチェーンに含まれていますか?! 変。それから、次のコードを使用してキーチェーンをクリアしようとしました...

[keychainItem resetKeychainItem];

唯一の問題は、これが私を助けるために何の役にも立たないことです。したがって、キーチェーンにあると思われるこれらのKeyChainItemDataおよびgenericPasswordQueryエントリを削除して、正しいエントリを追加できないようにするには、どうすればよいか考えていました。

どんな助けでも大歓迎です。

更新: したがって、KeychainItemWrapper を宣言するときにさらに調査を行うと、これらの値がすべてデバッグ領域に表示されますが、キーチェーンの開発が行われていない別のデバイスで同じコードを試した後も、同じコードが表示されました値。だから私はそれがデバイス上にないことを理解しています...うまくいけばそれは理にかなっています..私は解決策を見つけようとし続けます.

4

2 に答える 2

1

useyourloaf.comのこの短いステップバイステップの例を見てください。

シンプルな iPhone キーチェーン アクセスについて説明します。キーチェーンからアイテムを検索、作成、更新、および削除する例があります。

Apple Developer Keychain Services Referenceも参照してください。探しているコマンドは SecItemDelete です。

于 2013-07-23T15:39:31.637 に答える
0

KeychainItemWrapper を使用しないことをお勧めします。複数のプロジェクトで KeychainItemWrapper を使用した後、考慮されていない複数のバグとエッジ ケースを見つけ続けたので、キーチェーンhttps://github.com/reidmain/FDKeychainにアクセスするための独自のより単純なラッパーを作成しました。

setValue: および objectForKey: メソッドのみで、NSDictionary と非常によく似た動作をします。

于 2013-07-25T02:28:31.770 に答える