我需要对下列问题的一些提醒:删除对象NSFetchedResultsController
我使用的是iOS主从应用程序模板为我的应用程序,我遇到问题时,我从主原因请看详细信息页面。 我的问题是为什么NSFetchedResultsChangeDelete
在继续时被触发?
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
List *list = nil;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
但在我的情况,我想,当用户通过从右我还从服务器中删除对象刷卡表格单元格中删除对象做到以下几点,即,这个效果很好,当有一个表视图并没有segueing 。如果我阻止NSFetchResutlsController
表单删除对象,当我继续细节如下,然后从细节回来后查看表视图单元格不响应我的点击事件。即表格不会延续,点击时没有任何反应,
任何人都可以引导这里出了什么问题吗?我应该如何正确实现这个功能?
case NSFetchedResultsChangeDelete:
list = (List*)anObject;
BOOL visible = [self.navigationController.topViewController isKindOfClass:[RKGMasterViewController class]];
if(list.listSyncStatus == [NSNumber numberWithInt:1] && visible)
{
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self deleteDataFromServer:list];
}
好的,当用户滑动表格单元格时触发表格视图的事件? – Umair
当用户滑动表格视图时,会出现一个删除按钮。没有其他的。如果用户点击删除按钮,那么它将在tableViewDelegate中运行一个名为'tableView:commitEditingStyle:forRowAtIndexPath:'的函数。在这里,您应该删除核心数据实体并向服务器发送调用以删除相同的对象。 – Fogmeister
好吧,我已经完成了你所说的话,我的一半问题已经解决。现在剩下的问题是,当我点击单元格塞格细节视图,并返回到主视图后,该项目不存在,因为NSFetchResults控制器的didChangeObject方法 [tableView deleteRowsAtIndexPaths:@ [indexPath] withRowAnimation:UITableViewRowAnimationFade]; 行在执行时执行,我该如何解决这个问题? – Umair