如何将 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 个将在底部)并且结果将保持其顺序。例如如果一天发生变化,它将在列表中自动排序。很神奇吧?
这些是我的领域 类 和功能:
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()
没有按照我希望的方式工作。现在集合显示最旧的单元格高于最新的 - 这是错误的。我想最新的比最旧的高
需要注意的几件事。
首先,阅读
其次,除非您指定顺序,否则 Realm Results 没有保证顺序。另一方面,List 对象保持其顺序。
对 Results 集合进行排序很简单,并且实际上会在对象属性发生变化时按顺序保留结果中的对象,例如
let orderedResults = realm.objects(RealmItems.self).sorted(byKeyPath: "day", ascending: false)
将加载按 day
排序的所有 RealmItems 对象,降序(例如,第 20 个将在顶部,第 1 个将在底部)并且结果将保持其顺序。例如如果一天发生变化,它将在列表中自动排序。很神奇吧?