Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将collectionView中的单元格从最新到最旧排序。斯威夫特王国_Ios_Swift_Uicollectionview_Realm - Fatal编程技术网

Ios 如何将collectionView中的单元格从最新到最旧排序。斯威夫特王国

Ios 如何将collectionView中的单元格从最新到最旧排序。斯威夫特王国,ios,swift,uicollectionview,realm,Ios,Swift,Uicollectionview,Realm,以下是我的领域类和函数: 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 d

以下是我的领域类和函数:

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()
不能按我希望的方式工作。现在收集显示最旧的单元格高于最新的单元格,这是错误的。我想知道最新的比最老的要高一些

首先,阅读,例如,不要将其转换为数组或使用Swift函数对其进行排序。当然,您可以这样做,但它可能导致其他问题,因此最好避免,除非有特定的用例需要它

其次,领域结果没有保证的顺序,除非您指定该顺序。另一方面,列表对象保持其顺序

对结果集合进行排序很简单,例如,当对象属性发生更改时,实际上会使结果中的对象保持有序

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

将加载按<代码>日期排序的所有RealmItems对象,降序(例如,第20个将位于顶部,第1个将位于底部),结果将保持其顺序。e、 g.如果一天发生变化,它将在列表中自动排序。非常神奇,是吧?

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