Это еще один ответ с обновленной структурой POST.
struct Post {
var title: String
var date: String
var user: String
}
extension Post{
static let isoFormatter : ISO8601DateFormatter = {
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate,]
return formatter
}()
var dateFromString : Date {
let iSO8601DateString = date.components(separatedBy: ".").reversed().joined(separator: ".")
return Post.isoFormatter.date(from: iSO8601DateString)!
}
}
var uploadTimes = [Post(title: "", date: "05.09.2018", user: ""),
Post(title: "Hello", date: "02.10.2018", user: "Roman"),
Post(title: "Hi", date: "01.10.2018", user: "Roman"),
]
//sort dates
let dates = uploadTimes.compactMap { $0.dateFromString }
print(dates)
let sortedDates = dates.sorted { $0 > $1 }
print(sortedDates)
//sort posts
let sortedPost = uploadTimes.sorted{ $0.dateFromString > $1.dateFromString }
print(sortedPost)
Если используется формат чч: мм дд.Мм.гггг.Обновленный ответ выглядит так:
extension Post{
static let isoFormatter : ISO8601DateFormatter = {
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withInternetDateTime]
return formatter
}()
var dateFromString : Date {
let components = date.components(separatedBy: " ")
let iSO8601DateString =
(components.last!).components(separatedBy: ".").reversed().joined(separator: ".") + "T" + (components.first!) + ":00+00:00"
return Post.isoFormatter.date(from: iSO8601DateString)!
}
}
var uploadTimes = [Post(title: "", date: "01:20 05.09.2018", user: ""),
Post(title: "Hello", date: "01:21 02.10.2018", user: "Roman"),
Post(title: "Hi", date: "01:22 02.10.2018", user: "Roman"),
]