我需要一些关于以下问题的建议:
我正在为我的应用程序使用 iOS 主从应用程序模板,当我从主页面转到详细信息页面时遇到问题。
我的问题是为什么 NSFetchedResultsChangeDelete
在 segueing 时被触发?
- (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;
}
}
但在我的情况下,我想执行以下操作,即当用户通过从右侧滑动表格单元格删除对象时,我也从服务器中删除对象,这在有单个表格 View 且没有 segueing 时效果很好。如果我阻止 NSFetchResutlsController
表单删除对象,当我继续查看下面的详细信息时,那么在从详细信息 View 返回后,表格 View 单元格不会响应我的点击事件。即表格不会继续,点击时没有任何反应,
任何人都可以指导这里出了什么问题吗?我应该如何正确实现此功能?
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];
}
最佳答案
好的,首先。 NSFetchedResultsController
不会删除任何内容。它根本不对数据存储进行任何更新。它所做的一切都是获取对象并观察变化。
听起来您将 tableview
删除行与从数据存储中删除某些内容混淆了。
你真的不应该改变 NSFetchedResultControllerDelegate
方法来做比更新表更多的事情。
但是,当用户滑动单元格并点击 Delete
时,您应该在后台线程上从核心数据存储中删除相关数据。您还应该(作为此过程的一部分)发送请求以从服务器中删除数据。
如果您在后台线程
(和后台上下文)上执行删除操作,那么 NSFRC 将获取更改并为您从表中删除单元格。
关于ios - 删除 NSFetchedResultsController 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332923/