【问题标题】:Deleting object in coreData ios在coreData ios中删除对象
【发布时间】:2016-06-15 13:52:56
【问题描述】:

我在从核心数据中删除记录时收到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)

    }
}

【问题讨论】:

标签: ios swift uitableview core-data


【解决方案1】:
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext

您是否使用过此代码。甚至崩溃。可能是您的谓词的问题之一是您的谓词是空值。您想从具有空值的核心数据中获取数据,而该数据在数据库。

【讨论】:

    【解决方案2】:

    改为使用以下方法删除

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

    你应该使用

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

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

    - (void)deleteObject:(NSManagedObject *)object :指定在提交更改时应从其持久存储中删除的对象。 提交更改后,对象将从唯一表中删除。如果对象还没有被保存到持久化存储中,它会被简单地从接收者中移除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多