从字符串转换后按日期排序的 RxSwift

RxSwift ordering by date after convertiing from string

我有一个我正在订阅的数组,这个数组中的对象有一个 属性 日期,以字符串的形式。我需要在这样的日期之前订购我从订阅中收到的数组,但如果它是一个字符串就无法做到,我认为需要在日期中转换该字符串然后使用它来订购它们。我知道如何从字符串转换为日期,但不知道在哪里做

对象喜欢

struct Task: codable {
var date = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
}

self.viewModel.tasks
    .map({ items in
       return items.sorted(by: { [=10=].date.compare(.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 类型以保存日期而不是字符串...

struct Task: Codable {
    let date: Date
}

那么这会起作用:

tasks.map { tasks in
    tasks.sorted(by: { [=12=].date.compare(.date) == .orderedAscending })
}