手势识别器滑动以从核心数据中删除

Posted

技术标签:

【中文标题】手势识别器滑动以从核心数据中删除【英文标题】:Gesture Recognizer Swipe to Delete From Core Data 【发布时间】: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 应该发生的地方。如果没有,你可以考虑;它可以解决很多问题。 当我删除该行时它正在删除对象,但是当我拥有它时它会崩溃。我用错误更新了问题。 【参考方案1】:

试试这个

-(void)swipeleft:(UISwipeGestureRecognizer*)gestureRecognizer

    NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
    NSManagedObjectContext *context = [self managedObjectContext];

        // Delete object from database
        [context deleteObject:[self.lists objectAtIndex:indexPath.row]];
        [context save:nil];

        // Remove list from table view
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [self.lists removeObjectAtIndex:indexPath.row];

【讨论】:

[self.tableView deleteRowsAtIndexPaths:[self.lists objectAtIndex:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 这是导致它在我删除它时崩溃的行我很好我只是不再有滑动/删除动画。 收到另一个崩溃。 我仍然有这个问题。 你能给我崩溃日志吗? 检查这些链接discussions.apple.com/message/7461909#7461909***.com/questions/4186251/…

以上是关于手势识别器滑动以从核心数据中删除的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 iPad:UIPageViewController 中的 UITableView 滑动删除(手势识别器冲突)

快速手势识别器 tableviewcell 被否决

UITableView滑动删除iOS上的手势冲突

滑动删除 UITableView (iOS) 中的整个部分

识别 UIView 中的滑动手势以使用手势识别器滚动滚动视图

为啥滑动手势识别器在 swift 中会出错?