我正在从persistentStoreManagedObjectContext
UIView 中获取一个对象并向我的用户显示它的一些值。那个对象,我们称它为Book
有Author
关系。每当我要展示那本书时,我都会检查作者是否已设置。如果没有设置,我会:
[[RKObjectManager sharedManager] getObjectsAtPath:[NSString stringWithFormat:@"/api/rest/userprofiles/%@/",_currentBook.authorID] parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {..}
在成功回调中,我想做一个:
_currentBook.author = mappingResult.firstObject;
if (![_currentBook.managedObjectContext saveToPersistentStore:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
但是,我不能这样做,_currentBook.author = mappingResult.firstObject;
因为我得到:
Illegal attempt to establish a relationship between objects in different contexts
但是,我知道这个新获取Author
的数据保存在persistentStoreCoordinator 中,因为我将我的RestKit 配置为这样做(或者默认情况下,我不记得了)。所以我不想再次创建该对象,我只想在我的 currentContext 中获取它的值,即persistentStoreManagedObjectContext
. 我必须为此使用 NSFetchedResultsController 吗?
编辑
我已经在书中有一个连接,可以通过 authorID 连接到作者,我在从服务器获取 Book 对象的同时将其发回。但是,可能还没有获取作者对象,因此我保留了该 ID。
[bookMapping addConnectionForRelationship:@"author" connectedBy:@{ @"authorID": @"identifier" }];
但是,即使在获取该作者之后, book.author 也设置为 null,除非我在持久存储中再次 REFETCH。