RestKit:从ChildContext获取可转换属性到mainQueueMOC时出错

时间:2014-01-03 05:58:59

标签: ios objective-c core-data restkit nsmanagedobjectcontext

我正在使用RestKit从后端获取数据并将其持久保存在CoreData上。 我的TableViewController的FRC设置为[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext

为了操作这些数据,我有一个视图控制器,我可以在其中创建或编辑managedObjects。 为此,我在 -

中在视图控制器中创建scratchMOC
myMOC = [[RKManagedObjectStore defaultStore] 
            newChildManagedObjectContextWithConcurrencyType:NSMainQueueConcurrencyType 
            tracksChanges:NO]

self.album = (Album *)[self.scratchMOC objectWithID:album.objectID];

在退出视图控制器之前,我想将其保留到PSC并将对象放入[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext

为此,我做 -

[self.album saveToPersistentStore:&error];
self.album = (Album *)[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext 
                          objectWithID:self.album.objectID];

现在,当我检查self.album的属性时,任何类型为'transformable`的属性都是nil,而其他属性则填入。

但是,如果我使用mainQueueManagedObjectContext而不是使用persistentStoreManagedObjectContext,则会正确填写所有属性(包括可转换的属性)。

这似乎是一种不正确的行为,但我不确定为什么会这样。

有关RestKit的managedObjectContext架构的详细信息,请点击此处 - http://restkit.org/api/latest/Classes/RKManagedObjectStore.html

1 个答案:

答案 0 :(得分:0)

我能够通过执行

来解决这个问题
[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext refreshObject:self.album mergeChanges:NO];

之后

self.album = (Album *)[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext 
                      objectWithID:self.album.objectID];