我正在使用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
答案 0 :(得分:0)
我能够通过执行
来解决这个问题[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext refreshObject:self.album mergeChanges:NO];
之后
self.album = (Album *)[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext
objectWithID:self.album.objectID];