0

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

4

1 回答 1

0

最后,这是我对MagicalRecord(可能还有CoreData)的save:方法实现的误解:如果上下文()和父上下文(!!)没有变化[context hasChanges] == NO,保存将被中止,完成块用NOfor调用,successful没有错误对象。

于 2013-09-25T21:39:40.357 回答