のためにクラッシュします。ここには私が従うことを試みているSOC上の解決策があります:wrapperをiOSのKeyChainに保存してください。保存するには、Appleがその<a href="http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_h.html" rel="nofollow noreferrer">GenericKeyChain sample code</a>でKeyChainItemWrapperクラスを提供してきたパスワード
ラッパーの使用法は、このようなものです:
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"F11-email-auth" accessGroup:nil];
[keychain setObject:[emailTextfield text] forKey:(__bridge id)(kSecMatchEmailAddressIfPresent)];
[keychain setObject:[passwordTextfield text] forKey:(__bridge id)(kSecClassGenericPassword)];
電子メールのテキストフィールドを持つ行が受け入れられています。 しかし、パスワードを含む2行目は、次の例外を除いてクラッシュします。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'
*** First throw call stack:
(
0 CoreFoundation 0x01b445e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x018c78b6 objc_exception_throw + 44
2 CoreFoundation 0x01b44448 +[NSException raise:format:arguments:] + 136
3 Foundation 0x014a823e -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 Feeltracker 0x000053b3 -[KeychainItemWrapper writeToKeychain] + 899
5 Feeltracker 0x00004700 -[KeychainItemWrapper setObject:forKey:] + 272
6 Feeltracker 0x000092d6 -[FTLoginViewController connectToAccount:] + 374
7 libobjc.A.dylib 0x018d9874 -
何らかの理由が考えられますか?私はそれが私が使用している定数とは何か関係があるのだろうかと思います。
UPDATE:rmaddyの助けに
ありがとう:
これは、エラーをスローするようだ少しです:
// No previous item found; add the new one.
result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
NSAssert(result == noErr, @"Couldn't add the Keychain Item.");
結果は-50です。 SecItemAddはlibメソッドです。
コードなしではどういう意味ですか?上にリンクしたWrapper全体をコピーして貼り付けてもらいたいですか?私は何をしたのか正確にあなたを示しました。 (Appleのラッパー、サードパーティーではなく、ここでスパムコメントをする前に、リンクをクリックしてください) – Houman
Daij-Djan、悪い一日を過ごしているのか、単に幼稚なのか分かりません。まず、あなたは、あなたがdownvoting/closeを開始する理由なしに迷惑メールのコメントであり、それからあなたのコメントを削除して、それを追跡しないようにします。あなたが助けたいと思わないなら、その罰金。あなたがしていることは役に立たず、プロフェッショナルでもありません。 – Houman
デバッガを使用し、 'SecItemAdd'の戻り値を調べます(結果コードを含むようにlog文を更新します)。次に、「キーチェーン項目を追加できませんでした」というエラーメッセージを検索し、同じエラーコードを参照するものを探します。いくつかの原因が考えられます。エラーコードはそれを多く絞り込みます。 – rmaddy