删除coreData ios中的对象

时间:2016-06-07 07:01:36

标签: ios swift uitableview core-data

我从核心数据中删除记录时收到EXC_BAD_INSTRUCTION Error。这是代码:

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

    if editingStyle == .Delete {

        //deleteIncidents()

        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let context:NSManagedObjectContext = appDel.managedObjectContext

        context.delete(candles[indexPath.row] as! NSManagedObject)
        candles.removeAtIndex(indexPath.row)

        do{

            try context.save()
        }
        catch{

        }

        //tableView.reloadData()
        // remove the deleted item from the `UITableView`
        self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

    }
}

2 个答案:

答案 0 :(得分:0)

let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext

你有没有使用这个代码。甚至会崩溃。可能这是你的谓词中的一个你的谓词的问题是获得空值。你想从核心数据中获取具有空值的数据,这是不可用的数据库。

答案 1 :(得分:0)

而是使用以下方法删除

context.delete(candles[indexPath.row] as! NSManagedObject)

你应该使用

context.deleteObject(candles[indexPath.row] as! NSManagedObject)
  

- (void)delete:(id)sender:从用户界面中删除选择。   当用户点击编辑菜单的删除命令时,将调用此方法。 UIResponder的子类通常通过从用户界面中删除所选对象来实现此方法,如果适用,还从应用程序的数据模型中删除。它不应该向粘贴板写入任何数据。该命令从第一响应者行进到响应者链直到它被处理;如果没有响应者处理它,它将被忽略。如果响应者未在当前上下文中处理该命令,则应将其传递给下一个响应者。

     

- (void)deleteObject:(NSManagedObject *)object:指定在提交更改时应从其持久性存储中删除的对象。   提交更改时,将从uniquing表中删除对象。如果对象尚未保存到持久存储中,则只需将其从接收方中删除。