之外这是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