2010-04-25 62 views
3

的顺序是有一个内部ID变量或时间戳我可以在NSSortDescriptor用于检索顺序核心数据实体它们插入?检索的核心数据实体中插入

我宁可不要创建这样的属性,如果有一个更清洁的方式,但是显然这样做,如果没有其他的替代品。

回答

6

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

+0

不错,简单的想法 - 感谢 – Slee 2010-07-13 18:45:25

+3

设置默认值到现在都不行,你就需要把self.date = [NSDate的日期]在你的NSManagedObject子类里面 - (void)awakeFromInsert。 – 2012-07-06 07:44:44

1

您还可以添加一个属性到你的实体,将其命名为类似“sortNum”,每当你取你的实体,你带着一种描述它牵回家。

步骤1

添加的那种属性,在这种情况下,我把它命名为 “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%的代码运行良好。无论如何,你明白了这一点,并且可以调整和改进它。

好运。