Swift 如何在 CoreData 实体的特定索引处添加两个项目

How to add two items at a specific index in an entity in CoreData in Swift

我在 collectionView 中移动行,我没有对数据进行排序,因此所有新单元格都插入到 table 的末尾,但是当我移动一个单元格时,我想特别 select 它应该在核心数据中的实体内部移动的索引,这样 collectionView 将自动在更新的行中显示移动的单元格而无需任何额外的工作,是否可以不创建额外的 ID 属性?

该实体名为 List,它有两个属性,task_name 和 task_bool。

  var myData:[NSManagedObject] = []      

  let appDelegate =
        UIApplication.sharedApplication().delegate as! AppDelegate
        let managedContext = appDelegate.managedObjectContext!
        let newItem: AnyObject =  NSEntityDescription.insertNewObjectForEntityForName("List",
            inManagedObjectContext:
            managedContext)
        var deleltedRow = myArray[indexPath.row].valueForKey("task_name") as! String
        myData.removeAtIndex(indexPath.row)
        newItem.setValue(deleltedRow, forKey: "task_name"); // how would I add atIndex: here??
        newItem.setValue(true, forKey: "task_bool"); // how would I add atIndex: here??

核心数据维护一个无序的对象集合。如果您想以特定顺序显示这些对象,则需要在获取时或之后对它们进行排序。这意味着对象内部需要有一些信息,您可以根据这些信息进行排序。您目前没有任何东西,因此您需要添加一个 order 类型属性并使用适当的值对其进行维护。

Core Data 不以有序的方式存储对象。如果您想以特定顺序显示这些对象,您需要在您的实体中使用 property/attribute,这样您就可以按照自己的方式对列表进行排序。

向实体添加 order 属性并将其用于排序可能是个好主意。