Uma*_*air 0 objective-c uitableview nsfetchedresultscontroller ios
我需要一些关于以下问题的建议:
我正在为我的应用程序使用 iOS Master Detail 应用程序模板,当我从主页面转到详细信息页面时遇到问题。我的问题是为什么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;
}
}
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我想执行以下操作,即当用户通过从右侧滑动表格单元格删除对象时,我也从服务器中删除对象,这在有单个表格视图且没有 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];
}
Run Code Online (Sandbox Code Playgroud)
好的,第一件事。在NSFetchedResultsController不删除任何东西。它根本不对数据存储进行任何更新。它所做的一切都是获取对象并观察变化。
听起来您将tableview删除行与从数据存储中删除某些内容混淆了。
你真的不应该改变NSFetchedResultControllerDelegate方法来做比更新表更多的事情。
但是,当用户滑动单元格并点击时,Delete您应该从后台线程上的核心数据存储中删除相关数据。您还应该(作为此过程的一部分)发送从服务器中删除数据的请求。
如果您在background thread(和背景上下文)上执行删除操作,那么 NSFRC 将获取更改并为您从表中删除单元格。
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |