我正在开发一个 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。