【发布时间】:2020-04-28 15:18:26
【问题描述】:
考虑到这个对象数组:
struct Product {
var isFresh: Bool
var date: String
}
let products = [Product(isFresh: true, date: "2012-11-05T15:56+0000"),
Product(isFresh: false, date: "2017-11-05T15:56+0000"),
Product(isFresh: true, date: "2019-11-05T15:56+0000"),
Product(isFresh: false, date: "2014-11-05T15:56+0000"),
Product(isFresh: true, date: "2013-11-05T15:56+0000"),
]
如何编写一个函数,将数组分成两部分(isFresh 和!isFresh),然后按日期对这两部分进行排序,并将标记为 isFresh = true 的产品放在列表顶部。
我负责第一部分:
private func handleProducts(_ products: [Product]) -> [Product] {
return Dictionary(grouping: products) { $0.isFresh }
.sorted(by: { $0.key < $1.key })
.flatMap { $0.value }
}
【问题讨论】:
-
您应该将您的日期存储为
Date,这样就变得微不足道了