managedContext.insertObject 在 Swift 中调用“atIndex”的额外参数?

Posted

技术标签:

【中文标题】managedContext.insertObject 在 Swift 中调用“atIndex”的额外参数?【英文标题】:managedContext.insertObject extra argument in call `atIndex` in Swift? 【发布时间】:2016-01-15 12:51:57 【问题描述】:

这是我的代码:(我想重新排序表格并更新核心数据):

override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) 
    let entity =  NSEntityDescription.entityForName(entity, inManagedObjectContext: managedContext)

    let entityObject = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
    entityObject.setValue(content, forKey: key)

    self.managedContext.insertObject(entityObject, atIndex: 0)      //ERROR HERE

    do 
        try managedContext.save()
     catch let error as NSError 

    

我见过类似的代码here,但为什么我的代码不起作用?谢谢!

【问题讨论】:

【参考方案1】:

您提供的链接与您在此处所做的不同。他在那里所做的是将对象删除并插入到 Playlist 的数组中。

如果您真的想重新排序表格并相应地更新 Core Data,您可能需要在您的 Core Data 模型中添加一个index 字段,并在每次移动单元格时使用单元格索引更新它。

因此您可以按照index 字段的顺序将数据填充到表格视图中,并保持单元格顺序与数据模型同步。

【讨论】:

【参考方案2】:

首先附注:NSManagedObjectContext 中的对象是无序的,因此无法在特定索引处插入对象。

由于对象已经在NSManagedObject(entity:insertIntoManagedObjectContext:)方法的上面两行插入,删除导致错误的行。

【讨论】:

【参考方案3】:

同意 Vadian,您无需担心订购 Managed Object Context。

要更新你应该运行的 UI -

"tableView.reloadData"

除了上面的代码。

【讨论】:

以上是关于managedContext.insertObject 在 Swift 中调用“atIndex”的额外参数?的主要内容,如果未能解决你的问题,请参考以下文章