私のコードは、コア データを使用して多くのタスクを実行し、保存しようとすると、エラーなしでクラッシュします。保存のための私のコードは単純です:
[[self managedObjectContext] save:&error];
NSLog(@"Error: %@", error);
エラー行に到達せず、その時点でクラッシュしてホーム画面に戻ります。
診断で「Guard Malloc」以外をすべて選択しました。
これは、save コマンドを実行したときに取得するログです。
CoreData: sql: BEGIN EXCLUSIVE
CoreData: sql: SELECT Z_MAX FROM Z_PRIMARYKEY WHERE Z_ENT = ?
CoreData: sql: UPDATE Z_PRIMARYKEY SET Z_MAX = ? WHERE Z_ENT = ? AND Z_MAX = ?
CoreData: sql: COMMIT
CoreData: sql: BEGIN EXCLUSIVE
CoreData: sql: INSERT INTO ZENTRY(Z_PK, Z_ENT, Z_OPT, ZLOCATION, ZBOOKMARKED, ZCREATIONDATE, ZENTRYID, ZMESSAGE, ZSECTIONIDENTIFIER, ZTICDSSYNCID, ZVERSION) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
CoreData: sql: COMMIT
CoreData: sql: pragma page_count
CoreData: annotation: sql execution time: 0.0047s
CoreData: sql: pragma freelist_count
CoreData: annotation: sql execution time: 0.0069s
この前にエラーについての言及はありません。アプリをクラッシュさせている原因を知るにはどうすればよいですか?
編集:これは への呼び出しの後に[NSEntityDescription
insertNewObjectForEntityForName:@"Entry"
inManagedObjectContext:[self managedObjectContext]];
発生し、これの前に TICoreDataSync によってコア データ ストアで実行されたメソッドが原因であることがわかりました。そのコードを変更したり、コア データ ストアでの作業から削除したりすることはできません。複数のスレッドでストアにアクセスするのは問題だと思うので、メインスレッドでそれを処理する方法を知る必要がありますか?