之外這是My previous questionHOWTO創造核心數據實體MagicalRecord的saveWithBlock
一個遵循實質是,我需要一個類來創建一個核心數據對象,並將其傳遞給另一個類,然後將其保存。這種情況很複雜,因爲我們試圖使用MagicalRecord,堅持創建不同的上下文。下面是顯示了問題的代碼削減塊(這是在一個單元測試):
__block HLMReferenceData *referenceData = [HLMReferenceData MR_createEntity];
__block NSManagedObjectID *objId = nil;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
HLMReferenceData *localReferenceData = [referenceData MR_inContext:localContext];
[localContext obtainPermanentIDsForObjects:@[localReferenceData] error:NULL];
objId = localReferenceData.objectID;
}
completion:^(BOOL success, NSError *saveError){
referenceData = (HLMReferenceData *)[[NSManagedObjectContext defaultContext] existingObjectWithID:objId error:NULL];
}];
本質上,我們正在創建的對象,將它傳遞給一個MR保存調用,然後重新取回該對象,以便我們可以繼續使用它。
這會在執行... MR_inContext:localContext];
方法時拋出核心數據133000錯誤。這似乎源於主要背景沒有保存該記錄並且仍然具有臨時ID的事實。
真的需要一些幫助,因爲我們需要能夠在MR的saveWithBlock代碼之外創建對象。
您是否找到解決方案?我有相同的問題... – blackjacx 2014-10-17 09:13:32
我們發現了一個我們不喜歡的「黑客」,但是很有效。我們基本上重新編碼以避免使用多個上下文的MR。在其他地方,我們手動管理MR之外的對象。簡而言之,MR並不是它自稱的魔力子彈。 – drekka 2014-10-19 06:51:18