0

我正在从persistentStoreManagedObjectContextUIView 中获取一个对象并向我的用户显示它的一些值。那个对象,我们称它为BookAuthor关系。每当我要展示那本书时,我都会检查作者是否已设置。如果没有设置,我会:

    [[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。

4

1 回答 1

0

您应该让 RestKit 使用基于作者 ID 的外键映射来连接关系。这样一来,所有更新都是在同一上下文中同时进行的,并在返回映射结果之前保存。

于 2013-07-22T18:04:59.363 回答