Retrieve Core Data Entities in Order of Insertion

后端 未结 2 852
情深已故
情深已故 2021-02-10 11:25

Is there an internal ID variable or timestamp I can use in a NSSortDescriptor to retrieve Core Data entities in the order they were inserted?

I would rather not have to

相关标签:
2条回答
  • 2021-02-10 12:15

    No, if you want a sort order for your data, you need to add that to your entities yourself. However you can easily add a NSDate attribute that has a default value of "NOW" so that it will auto-populate.

    0 讨论(0)
  • 2021-02-10 12:18

    You can also add an attribute to your entity, name it something like "sortNum", and whenever you fetch your entity you fetch it with a sort descriptor.

    Step 1

    Add the sort attribute, in this case I named it "displayOrder"

    Step 2

    Append or insert the new item to your list.

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

    Step 3

    Resort everything in that entity and update their sort value.

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

    Then save!

    Step 4

    Now, next time you do a fetch request, make sure you add in the sort.

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

    That's it!

    That should handle your sort fairly well. To be honest, sometimes this code does insert my new items second from the top instead of the top, but 95% of the time this code works great. Regardless, you get the idea and can tweak and improve it.

    Good luck.

    0 讨论(0)
提交回复
热议问题