ios - 同时从 TableView 行和核心数据中删除项目

标签 ios iphone swift xcode6

我正在尝试从 TableView 和名为“Books”的实体中删除项目。但是,我不知道我是否走在正确的轨道上。当我尝试这段代码时:

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

        var appdel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        var context:NSManagedObjectContext = appdel.managedObjectContext!
        var request = NSFetchRequest(entityName: "Books")

        if editingStyle == UITableViewCellEditingStyle.Delete {

            addBook.myBooks.removeAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
            context.deleteObject(addBook.myBooks[indexPath.row] as! NSManagedObject)

        }
    }

我在最后一行收到警告“从‘String’转换为不相关的类型‘NSManagedObject’总是失败。”有谁知道我该如何解决这个问题?我读过,您可以使用 fetchedResultsController 轻松处理表中的核心数据,但我是编程新手,发现一般设置核心数据时该方法有点困惑。 fetchedResultsController 是管理我的 TableView 中的数据所必需的吗?

最佳答案

从你的错误来看,addBook.myBooks 是一个字符串数组。

直接的问题是 deleteObject 不适用于字符串,它适用于托管对象——即 NSManagedObject 的实例或 的子类NSManagedObject。你不能像那样从 Core Data 中删除一个字符串,你必须删除与该字符串对应的托管对象。该错误专门告诉您 as! NSManagedObject 不适用于字符串,因为字符串与托管对象完全不同。

[您通过 removeAtIndex 删除 indexPath.row 处的字符串,然后又尝试使用 indexPath 处的字符串,这也是一个问题。行,但那不是这里的真正问题。]

您需要做的是找到与您要删除的 TableView 行对应的托管对象,并将其传递给 deleteObject。如果不更全面地了解您的 View Controller 如何工作,就不可能确切地说出您将如何做到这一点,但有几件事是明确的:

  1. 您方法中的前三行没有做任何有用的事情。削减它们——即使你让它们起作用,它们在这里也是错误的方法。您不希望必须在此处获取要删除的托管对象。到达此方法时,您应该已经知道如何删除它。

  2. 没有必要使用NSFetchedResultsController 将核心数据与 TableView 放在一起。但是,如果您是编程新手,您可能会发现使用它会容易得多。

关于ios - 同时从 TableView 行和核心数据中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527486/

相关文章:

ios - NSTimeInterval 到 unix 时间戳

ios - AppStore Connect 显示的屏幕截图颜色空间错误

iOS ScrollView 、容器 View - 自动布局问题

ios - 如何在 Objective-C 中表示表格数据

swift - 学习 swift : expressions are not allowed at the top level

ios - PFQuery findObjectsInBackgroundWithBlock 没有被调用?

ios - UITableView 中的 NSRangeException

iPhone SDK 3.2 测试版和 iPhone SDK 3.1.2

ios - 使用 UIViewPropertyAnimator 按顺序动画 UIView 的 alpha

ios - Swift Progress View 动画使进度条超过 100%