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

Core data 按插入顺序检索核心数据实体,core-data,sorting,timestamp,insert-id,Core Data,Sorting,Timestamp,Insert Id,在NSSortDescriptor中是否有内部ID变量或时间戳可用于按照插入顺序检索核心数据实体 如果有更干净的方法,我宁愿不必创建这样的属性,但如果没有其他选择,我显然会这样做。不,如果您想要数据的排序顺序,您需要自己将其添加到实体中。但是,您可以轻松添加默认值为“NOW”的NSDate属性,以便自动填充 您还可以向实体添加一个属性,将其命名为“sortNum”,并且无论何时提取实体,都可以使用排序描述符进行提取 步骤1 添加sort属性,在本例中,我将其命名为“displayOrder”

在NSSortDescriptor中是否有内部ID变量或时间戳可用于按照插入顺序检索核心数据实体


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

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

您还可以向实体添加一个属性,将其命名为“sortNum”,并且无论何时提取实体,都可以使用排序描述符进行提取

步骤1

添加sort属性,在本例中,我将其命名为“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" )
    }
}
就这样

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


祝你好运。

将默认值设置为“现在”不起作用,你需要将self.date=[NSDate-date];NSManagedObject子类中的inside-(void)awakeFromInsert。我知道这很旧,但我正在考虑做一些非常类似的事情。是否存在任何性能问题,每次移动某些内容时都必须重写数千条记录?
   let sortDescriptor = NSSortDescriptor(key: "displayOrder", ascending: true )