按插入顺序检索核心数据实体

时间:2010-04-25 10:46:32

标签: core-data sorting timestamp insert-id

我是否可以在NSSortDescriptor中使用内部ID变量或时间戳来按插入顺序检索Core Data实体?

如果有更清洁的方式,我宁愿不必创建这样的属性,但如果没有其他选择,显然会这样做。

2 个答案:

答案 0 :(得分:7)

不,如果您想要数据的排序顺序,则需要自己将其添加到实体中。但是,您可以轻松添加一个默认值为“NOW”的NSDate属性,以便它自动填充。

答案 1 :(得分:3)

您还可以向实体添加属性,将其命名为“sortNum”,每当您获取实体时,都可以使用排序描述符来获取它。

第1步

添加sort属性,在本例中我将其命名为“displayOrder”

Core Data: add sort order

第2步

将新项目添加或插入列表。

 let insertAt = 0
 managedContextVar.insert(mngdObjectVar, atIndex: insertAt )

第3步

计算该实体中的所有内容并更新其排序值。

func updateDisplayOrder() {
    for i in 0..<taskList_Cntxt.count {
        let task = taskList_Cntxt[i]
        task.setValue( i, forKey: "displayOrder" )
    }
}

然后保存!

第4步

现在,下次执行获取请求时,请确保添加排序。

   let sortDescriptor = NSSortDescriptor(key: "displayOrder", ascending: true )

就是这样!

这应该能很好地处理你的排序。老实说,有时这段代码确实会从顶部而不是顶部插入我的新项目,但95%的时间此代码工作得很好。无论如何,你都能得到这个想法,并且可以进行调整和改进。

祝你好运。