使用RestKit 0.20.3。在抓取的结果控制器的didChangeObject:(id) … forChangeType
方法中放置post/put/delete(创建/更新/删除)调用没有解决。RestKit 0.20.x如何从表格视图发布/放置/删除(创建/更新/删除)
从数据库获取最新条目时,获取结果控制器(FRC)获取新插入的检索记录的插入通知。这会导致重复该对象的POST。该帖子本身导致两个POSTS和五个PUTS。第一个POST是RestKit(RK)检索和ID。第二个是导致POST的POST。 PUTS来自两个帖子的更新,每个帖子都会在FRC中生成更改通知。这样做的主要后果是每次刷新都会增加2次幂的记录重复。
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { switch (type) { case NSFetchedResultsChangeInsert: [self.timeEntryTableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade]; // call to RK enqueue a POST with the object via RKObjectManager break; case NSFetchedResultsChangeDelete: [self.timeEntryTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];//// // call to RK enqueue a DELETE with the object via RKObjectManager break; case NSFetchedResultsChangeUpdate: [self.timeEntryTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; // call to RK enqueue a PUT with the object via RKObjectManager break; … } }
的问题是,什么是正确的方法是什么?我相信答案涉及核心数据关系和节约。我正在努力。不知道这会导致什么。指针欢迎。
当前回答RestKit - Send added/edited/deleted objects after offline storage会帮助我。
你怎么定义'不必要'? FRC将收到有关更改的通知,但不一定会进行综合更改。这也取决于你如何保存MOC关于如何发布通知... – Wain
你的评论让我质疑,这种方法可能实际上是正确的,我可能已经犯了一些其他错误。我创建了一个较小的测试应用程序来验证不良行为,并验证了我的怀疑,认为这不是正确的方法。你会发现修改后的问题可以更清楚地描述不良行为。是的,我认为正确的做法可能与保存托管对象上下文有关。 –