Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 插入前分配的属性未分发到父上下文进行保存_Ios_Objective C_Core Data - Fatal编程技术网

Ios 插入前分配的属性未分发到父上下文进行保存

Ios 插入前分配的属性未分发到父上下文进行保存,ios,objective-c,core-data,Ios,Objective C,Core Data,我复习了其他问题,比如。 但这并没有解决我的问题。 让我解释一下我的情况 安装程序 我使用了嵌套的NSManagedObjectContext writerContext链接到NSPersistentStoreCoordinate mainContext链接到具有parentContext的writerContext 我创建的对象未被-(id)initWithEntity:(NSEntityDescription*)实体插入ManagedObjectContext:(NSManagedO

我复习了其他问题,比如。 但这并没有解决我的问题。 让我解释一下我的情况


安装程序 我使用了嵌套的NSManagedObjectContext

  • writerContext链接到NSPersistentStoreCoordinate
  • mainContext链接到具有parentContext的writerContext

我创建的对象未被
-(id)initWithEntity:(NSEntityDescription*)实体插入ManagedObjectContext:(NSManagedObjectContext*)上下文插入
和
[self initWithEntity:entity insertIntoManagedObjectContext:nil]

在插入之前分配属性
[mainContext insertObject:object]
,以及 插入后分配其他属性并保存到mainContext


结果 插入前分配的属性在mainContext(
[mainContext objectWithID:objectID]
)中填充,但在writerContext(
[writerContext objectWithID:objectID]
)中填充


我怀疑这个问题的原因是插入之前的assinged属性似乎没有标记为changed。因为如果我在插入后用其他值更新已分配的属性,则在保存并向上传播到writerContext后,它不是nil


这种情况下的问题是什么?我应该如何解决这个问题?

解决方法是先将对象插入上下文,然后分配其属性。如果必须在之前插入它们,则可以在保存之前再次读取和分配它们。

我延迟插入的原因是,我不希望在保存其他对象时间接保存此对象。在我的情况下,应该使用其他方法?您可以创建另一个子上下文,如果不想保存它,可以将其丢弃。您还可以通过在正确的位置重置
来丢弃更改。从技术上讲,这真是微不足道。我想,你的问题更多的是关于一般的应用程序流逻辑。也许你应该回到设计委员会,制定一个稳健的计划。创建子上下文不适合我的解决方案,因为我应该在父上下文中设置与其他对象的关系。但是,你是对的。我应该重新设计储蓄计划!谢谢