6

我可以在 NSSortDescriptor 中使用内部 ID 变量或时间戳来按插入顺序检索核心数据实体吗?

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

4

2 回答 2

8

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

于 2010-04-25T16:44:41.553 回答
3

您还可以为您的实体添加一个属性,将其命名为“sortNum”之类的名称,并且每当您获取实体时,您都可以使用排序描述符来获取它。

第1步

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

核心数据:添加排序顺序

第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步

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

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

就是这样!

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

祝你好运。

于 2015-12-18T18:59:09.050 回答