Core Data を使用して外部データを SQLite に追加/既存のデータを更新しようとしています。
基本的に、外部 Web サービスから JSON を受け取り、次のコードを使用して、DB に新しいオブジェクトを追加するか既存のオブジェクトを更新する必要があるかを調べています。
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"name" inManagedObjectContext:context]];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"id = %@", [data valueForKey:@"key"]]];
NSArray *results = [context executeFetchRequest:fetch error:nil];
if (results.count == 1)
{
// update existing
}
else
{
// add new
}
問題は、次のコードが例外を引き起こす場合があることです。
Thread 1: EXC_??? (11) (code=0, subcode=0x0)
例外はで発生しますNSManagedObjectContext executeFetchRequest:error:
アプリの実行を続けると、すべて問題ないようです。
この例外について心配する必要がありますか?
私はそれを持っているのはちょっと面倒ですが、この例外の原因と結果を知ることはより重要ですか?
いくつかの追加の詳細 (関連する場合に備えて):
- 上記のコードは、ループ内で複数回 (約 25 万回) 実行されます。
- コードはメイン スレッドで実行されます (ええ、知っていますが、これはプロトタイプのようなものです)。
- メインスレッドでコンテキストが作成されました。
- 外部データはバックグラウンド スレッドで作成されます
[編集]いくつかの詳細:
executeFetchRequest:error
例外が発生した場合でも、初期化された配列を返します。error
パラメータを指定してもエラーは発生しませんexecuteFetchRequest:error