2013-09-25 44 views
0

我正在開發一個OS X應用程序,它使用單線程的Core Data模型而沒有嵌套上下文。NSManagedObjectContext保存不成功,但返回nil錯誤

我在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小牛DP 8

回答

0

最後,這是我的誤解MagicalRecord的(也可能是CoreData的)實現的​​方法:萬一有上下文沒有變化( [context hasChanges] == NO)和父上下文(!!),保存將被中止,並使用NOsuccessful調用完成塊,並且沒有錯誤對象。

相關問題