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

时间:2015-07-01 07:02:47

标签: swift core-data insert collectionview

我在collectionView中移动行,我没有对数据进行排序所以所有新单元都插入到表的末尾,但是当我移动单元格时,我想要专门选择应该在其中移动的索引核心数据中的实体,这样,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??

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

核心数据不按有序方式存储对象。如果要按特定顺序显示这些对象,则需要在实体中使用属性/属性,以便按照自己的方式对列表进行排序。

向实体添加 int i,j; printf("%d\n" , scanf("%d %d", &i,&j) ); 属性并将其用于排序可能是个好主意。