按存储为字符串的日期对数组排序

时间:2019-05-20 22:04:48

标签: arrays swift sorting date

我有一个自定义的Post对象,该对象存储创建帖子的日期,并使用Firestore存储所有日期对象作为String值存储。

我有一个屏幕,通过从数据库中检索数据以创建自定义Post对象,然后将它们添加到存储帖子的自定义数组中,在表格视图上显示所有帖子

var postArray:发布

如上所述,每个帖子都有一个以字符串形式存储的日期。如何按日期(字符串)对数组进行排序?

2 个答案:

答案 0 :(得分:0)

默认情况下,您可以将字符串与><符号进行比较,因为默认情况下会与UNICODE COLLATION ALGORITHM进行比较。

有关更多详细信息,请参见@Martin R的答案 https://stackoverflow.com/a/38910703/6315441

现在,如果所有日期都采用任何一种格式,则可以使用

let sortedPostArray = postArray.sorted(by: { $0.date > $1.date})

答案 1 :(得分:0)

在Post结构/类中创建一个计算属性,以从字符串中获取日期值

struct Post {
    var dateString: String
    private let dateFormatter = DateFormatter()
    var date: Date? {
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"//Change date format as per your string
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        return dateFormatter.date(from: dateString)
    }
}

然后您可以按此值对数组进行排序

let sortedArray = postArray.sorted { $0.date ?? .distantFuture < $1.date ?? .distantFuture}