Core Data ストアに新しい NSManagedObject を追加した後、次の呼び出しを試みました。
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
次の例外が発生しました(奇妙なことに、エラーはなく、結果も肯定的でした!)
2013-03-15 18:32:09.753 Nick copy[28782:3407] CoreData: Ubiquity: ログ ファイルのエクスポート中に例外が発生しました: NSInternalInconsistencyException 保存通知の内容: NSConcreteNotification 0x3891b0 {name = _NSSQLCoreTransactionStateChangeNotification; object = (URL: ファイル://localhost/var/mobile/Applications/FCAF7FC6-7DC8-4E0B-A114-38778255CA90/Documents/MyApp.sqlite); userInfo = { "_NSSQLCoreActiveSaveRequest" = ""; "_NSSQLCoreTransactionType" = 2; "_NSSQLCoreTransientSequenceNumber" = 1; }}
「保存」メソッドからすべての例外をキャッチでき、アプリは正常に動作します。完全に安全ではないと感じているので、これが本当に節約できるかどうか疑問に思っています.
編集: オブジェクトを削除しようとするときの別の例外:
Catched Exception: Failed to process pending changes before save. The context is still dirty after 100 attempts. Typically this recursive dirtying is caused by a bad validation method, -willSave, or notification handler.