6

に対してかなり普通の addPersistentStore を実行していたNSPersistentStoreCoordinatorところ、&error コードが生成されました。

だから私はNSLogそれに行き、これをしたときにアクセスエラーが発生しました:

    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

これは一般的なイディオムのようです。

次のようにエラーステートメントを再フォーマットしたとき:

     NSLog(@"Unresolved error   %@",   [error userInfo]);

...問題は解決しました。

NSZombie でさえ、不正なアクセス エラーを正しくトラップしませんでした。

何か案は?

4

2 に答える 2

18

どのようにエラーをキャッチしていますか?

bbum で説明されている正しい方法は次のとおりです。

NSError *error;
BOOL success = [blah blah:blah error:&error];
if (!success) {
    NSLog(@"Error: %@ %@", error, [error userInfo]); //Or other error handling (e.g., [NSApp presentError:error]).
} else {
    //Succeeded—ignore the error variable entirely
}

(これはblah:error:を返すメソッドBOOLの場合です。bbum が回答した質問の例は、オブジェクトを返すメソッドの場合でした。エラー処理パターンはどちらの場合も同じです。)

その直後の彼の Twitter の更新によると、一部の API は、要求が成功した場合でも内部でエラー オブジェクトを出力しますBOOL。これがあなたに起こったことだと思います。

解決策は、API が失敗を報告した場合にのみエラー オブジェクトを確認することです。

于 2009-12-11T18:04:02.073 に答える
1

nil 値で NSError を初期化することを忘れないでください

NSError* err = nil;
[anObject doSomethingGetError:&err];
if (err) {
    NSLog(...);
}

それでも解決しない場合は、API のバグです

于 2009-12-11T18:09:20.520 に答える