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



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

对象类似于

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 })
}

相关内容

  • 没有找到相关文章

最新更新