我有一个核心数据模型设置如下:
Parent <-->> Child
。这个parent.children
关系是有序的。
我创建了一个新的Parent
对象(没有Child
个对象)并将其上传到Web服务器。
在后台进行上传时,我创建了一个新的Child
对象,其中child.parent
设置为步骤1中的父对象。然后我设置了子对象作为视图控制器中的属性。
步骤1的上传完成,我在managedObjectContext上调用save
。
在视图控制器中,我再次在managedObjectContext上调用save
。
接下来,当我在视图控制器中执行[self.child.parent.children containsObject:self.child]
时,我得到false
。
在视图控制器中,我检查了objectID
和self.child
的{{1}},它们都是相同的。
这里只使用了一个[(Child *)self.child.parent.children objectAtIndex:0]
。
所以我不确定是什么原因导致NSOrderedSet包含设置返回false,甚至我应该记录哪些其他信息来调试此问题。
编辑1:提供一些代码
保存是通过NSManagedObjectContext
的{{1}}类别完成的。
要保存的代码位于RestKit
,其中包含以下链接:
https://github.com/RestKit/RestKit/blob/development/Code/CoreData/NSManagedObjectContext%2BRKAdditions.m#L39
此方法在内部调用NSManagedObjectContext+RKAdditions
,因此从任何线程调用此方法都可以。
上传也是通过saveToPersistentStore
完成的,在完成处理程序中,performBlockAndWait
对象的一个属性会更新,然后调用RestKit
。
viewController有一个名为parent
的属性。初始化视图控制器时,该属性将传递给init方法,然后设置
[parent.managedObjectContext saveToPersistentStore]
稍后点击按钮,再次在managedObjectContext上调用child
。
完成后,我会尝试- (id) initWithChild:(Child *)child
{
if (self = [super init]) {
self.child = child;
}
return self;
}