【问题标题】:How to sort cells in collectionView from newest to oldest. Realm, Swift如何对 collectionView 中的单元格从最新到最旧进行排序。领域,斯威夫特
【发布时间】:2021-08-20 21:46:39
【问题描述】:

这些是我的领域类和函数:

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{$0.day > $1.day}
    }    
}

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

【问题讨论】:

  • 任何严肃的数据库都提供自定义谓词来获取排序的数据。使用它更有效。

标签: ios swift uicollectionview realm


【解决方案1】:

需要注意的一些事项。

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

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

对 Results 集合进行排序很简单,并且实际上会随着对象属性的变化而使结果中的对象按顺序排列,例如

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 2014-10-18
    相关资源
    最近更新 更多