从核心数据中删除对象(错误)

时间:2015-02-12 19:40:30

标签: ios swift core-data

我想从核心数据中删除一个对象。我试过这段代码,但它没有用。怎么了?我正在使用Swift和Xcode 6.1.1。

代码:

    let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
    var daten = [TaskModel]() //CoreData Entity

    managedObjectContext!.deleteObject(daten[indexPath.row])
    appDelegate.saveContext()
    let fetchRequest = NSFetchRequest(entityName: "TaskModel")
    daten = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as [TaskModel]
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Right)

1 个答案:

答案 0 :(得分:0)

daten是一个空数组。

因此,daten[x]会崩溃。

在您的情况下,xindexPath.row,但会因任何值而崩溃 如果您尝试通过索引访问空数组的元素,则会出现上述错误。

要从获取的结果控制器中获取对象并将其删除,

let task = self.fetchedResultsController.objectAtIndexPath(indexPath) as TaskModel
self.fetchedResultsController.managedObjectContext.deleteObject(task)
self.fetchedResultsController.managedObjectContext.save(nil)

Xcode模板中获取结果控制器的标准实现将自动更新您的表视图,您甚至可以免费获得动画。

如果您使用NSFetchedResultsController ,请停在此处并重构。