我有一个自定义的Post对象,该对象存储创建帖子的日期,并使用Firestore存储所有日期对象作为String值存储。
我有一个屏幕,通过从数据库中检索数据以创建自定义Post对象,然后将它们添加到存储帖子的自定义数组中,在表格视图上显示所有帖子
var postArray:发布
如上所述,每个帖子都有一个以字符串形式存储的日期。如何按日期(字符串)对数组进行排序?
答案 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}