【发布时间】:2014-04-10 03:26:06
【问题描述】:
我正在开发一个使用核心数据的应用程序,我想添加一个手势,如果用户向左滑动它将删除数据库中的对象。我已经设置了所有手势识别器部件,但在创建从 tableview 和核心数据中删除对象的方法时遇到了麻烦。因此,如果有人能看到这一点并指出我正确的方向,我将不胜感激!谢谢!
TableView.M
-(void)swipeleft:(UISwipeGestureRecognizer*)gestureRecognizer
{
NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
NSManagedObjectContext *context = [self managedObjectContext];
// Delete object from database
[context deleteObject:[self.lists objectAtIndex:indexPath.row]];
// Remove list from table view
[self.lists removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
@end
错误:
self(ViewController *) 0x8ea0a90
indexPath=(NSIndexPath * ) nil
context+(NSManagedObjectContext *) 0x8d747f0
【问题讨论】:
-
你有什么问题?也许您只是忘记致电
[context save:nil]来保存您的更改? -
好的,我添加了那行代码并添加了:
[self.tableView reloadData];然后它开始在这里崩溃:[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];当我评论说它有效时,我只需要对单元格褪色的动画进行一些处理删除时。 -
崩溃怎么办?说什么?引发了什么异常?
-
你在使用 NSFetchedResultsController 吗?如果你是,那么这就是 deleteRows 应该发生的地方。如果没有,你可以考虑;它可以解决很多问题。
-
当我删除该行时它正在删除对象,但是当我拥有它时它会崩溃。我用错误更新了问题。
标签: ios objective-c uitableview core-data uigesturerecognizer