插入之前分配的属性不会传播到父上下文以进行保存

时间:2013-11-02 08:42:41

标签: ios objective-c core-data

我查看了其他SO问题,例如Assigning NSManagedObject properties before insertion doesn't stick。 但这并没有解决我的问题。 让我解释一下我的情况。


设置

我使用了嵌套的NSManagedObjectContext

  • 与NSPersistentStoreCoordinate链接的writerContext
  • 使用parentContext链接到writerContext的mainContext

我创建了- (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context尚未插入的对象  和[self initWithEntity:entity insertIntoManagedObjectContext:nil];

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


后果

插入前的赋值属性在mainContext([mainContext objectWithID:objectID])中填充,但在writerContext([writerContext objectWithId:objectID])中填充 nil


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

在这种情况下有什么问题,我应该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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