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.如果一天发生变化,它将在列表中自动排序。非常神奇,是吧?任何严肃的数据库都提供自定义谓词来获取已排序的数据。使用它更有效。真的,谢谢你