如何将 collectionView 中的单元格从最新到最旧排序。领域,Swift

How to sort cells in collectionView from newest to oldest. Realm, Swift

这些是我的领域 类 和功能:

class RealmItems: Object {
    @objc dynamic var header = String()
    @objc dynamic var specification = String()
    @objc dynamic var day = Int()
    @objc dynamic var month = Int()
    @objc dynamic var deadline = String()
    @objc dynamic var status = String()
}

class RealmModel {
    
    static let shared = RealmModel()
    private let realm = try! Realm()
    
    func addTask(headerTask: String, specificationTask: String, dayTask: Int, monthTask: Int, deadlineTask: String, statusTask: String) {
        
        let new = RealmItems()
        
        new.header = headerTask
        new.specification = specificationTask
        new.day = dayTask
        new.month = monthTask
        new.deadline = deadlineTask
        new.status = statusTask
        
        try! realm.write {
            realm.add(new)
        }
    }
    
    func deleteTask(name: RealmItems) {
        try! realm.write {
            realm.delete(name)
        }
    }
    
    func getTasks() -> [RealmItems] {
        
        var arrayTasks: [RealmItems] = []
        
        for task in realm.objects(RealmItems.self) {
            arrayTasks.append(task)
        }
        return arrayTasks.sorted{[=11=].day > .day}
    }    
}

函数getTasks() 没有按照我希望的方式工作。现在集合显示最旧的单元格高于最新的 - 这是错误的。我想最新的比最旧的高

需要注意的几件事。

首先,阅读 例如不要将它们转换为数组或使用 Swift 函数对它们进行排序。嗯,你可以,但它可能会导致其他问题,所以最好避免这种情况,除非有特定的用例需要它。

其次,除非您指定顺序,否则 Realm Results 没有保证顺序。另一方面,List 对象保持其顺序。

对 Results 集合进行排序很简单,并且实际上会在对象属性发生变化时按顺序保留结果中的对象,例如

let orderedResults = realm.objects(RealmItems.self).sorted(byKeyPath: "day", ascending: false)

将加载按 day 排序的所有 RealmItems 对象,降序(例如,第 20 个将在顶部,第 1 个将在底部)并且结果将保持其顺序。例如如果一天发生变化,它将在列表中自动排序。很神奇吧?