使用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
你的評論讓我質疑,這種方法可能實際上是正確的,我可能已經犯了一些其他錯誤。我創建了一個較小的測試應用程序來驗證不良行爲,並驗證了我的懷疑,認爲這不是正確的方法。你會發現修改後的問題可以更清楚地描述不良行爲。是的,我認爲正確的做法可能與保存託管對象上下文有關。 –