Search code examples
swiftrealm

Remove item without swap in Realm


If I use this code:

try! self.realm.write {

                    let deletedObject = self.storage_array[lbl.tag]
                    self.realm.delete(deletedObject)

                    self.reload()
                    }

where

let realm = try! Realm()
    lazy var storage_array: Results<Storage> = { self.realm.objects(Storage) }()

The item is removed but at this place the last item is appeared. That is, before: 1,2,3,4, (remove 2) after: 1,4,3

How can I remove this item without changing the arrangement? That is, I want: 1,3,4.


Solution

  • Objects in a Realm have no inherent order. If you'd like the objects in a Results to be in a specific order you should sort them explicitly using Results.sorted(_:ascending:).