我有一个和我正在订阅的数组,这个数组中的对象有一个字符串形式的属性日期。我需要在这样的日期之前订购我从订阅中收到的数组,但如果它是一个字符串,我就无法订购,我认为需要将该字符串转换为日期,然后使用它来订购它们。我知道如何从字符串转换为日期,但不知道在哪里进行
对象类似于
struct Task: codable {
var date = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
}
self.viewModel.tasks
.map({ items in
return items.sorted(by: { $0.date.compare($1.date) == .orderedAscending })
})
.bind(to: self.tasksTableView.rx.items(dataSource: self.dataSource))
.disposed(by: self.rx.disposeBag)
如果您不想更改date
的类型,那么请在map
的闭包中完成所有操作。
tasks.map { tasks in
tasks.sorted(by: { lhs, rhs in
dateFormatter.date(from: lhs.date)!.compare(dateFormatter.date(from: rhs.date)!) == .orderedAscending
})
}
但是,我会将Task
类型更改为包含Date而不是String。。。
struct Task: Codable {
let date: Date
}
然后这会起作用:
tasks.map { tasks in
tasks.sorted(by: { $0.date.compare($1.date) == .orderedAscending })
}