ネストされたコンテキストのないシングルスレッドの Core Data モデルを使用する OS X アプリケーションを開発しています。
defaultContext のメイン スレッドでオブジェクトを作成し、作成後にそれらを保存しようとしていますが、保存はエラーを返さずに失敗します。CoreData オブジェクトのメソッドを上書きしていませんが、MagicalRecord の最新バージョンを使用しています。
失敗するコード:
// pseudocode for createOrFetchWithData:inContext:
// fetch object from value in objectDict
// if(!object) create project in context
// [object importValuesForKeysWithObject:objectData] // MR method
// return object
MyObject *object = [MyObject createOrFetchWithData:objectData
inContext:[NSManagedObjectContext defaultContext]];
if(!object) return; // just to emphasise that I am sure the object is not nil.
[[NSManagedObjectContext defaultContext] saveOnlySelfWithCompletion:^(BOOL saveSuccessful, NSError *error) {
if(saveSuccessful) {
NSLog(@"yay");
} else {
NSLog(@"nay");
}
}];
の戻り値[NSManagedObjectContext defaultContext]
は nil ではなく、コードがメイン スレッドで実行されることを確認しました。
で設定されていない関係がありますが、データ モデルでMyObject *object
は としてマークされています。optional
この単純な操作が失敗する原因は何ですか? 問題なく保存できるエンティティは他にもありますが、この特定のケースは失敗します。
注: OS X Mavericks DP 8 を実行しています。