如何在字典中排序日期?



我尝试按日期对字典进行排序,但未安排的订单日期仍然随机出现,我尝试不同的方式,我将日期字符串转换为日期,然后按日期排序,我尝试对日期字符串进行排序,但保持相同的问题

这是我的代码,当我试图转换日期字符串来自服务器日期':

func personsByMonth(persons : [Orderproperties])  {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd"
df.dateStyle = .short
let dictionaryByMonth = Dictionary(grouping: persons, by: { getDatebyString(date: $0.dateCreated ?? "") })
.sorted{guard let d1 = df.date(from:$0.key) , let d2 = df.date(from:$1.key) else {return false}
return d1 < d2}
print(dictionaryByMonth)

for (key, orders) in dictionaryByMonth{
var item = [OrderItems]()

for order in  orders {
if (order.status == "completed") {
item.append(OrderItems(image: "delivered", location: order.billing?.city ?? "", quantity: String(order.lineItems.count), state: order.status ?? "", price: order.total ?? "0"))
}
else {
item.append(OrderItems(image: "inprogress", location: order.billing?.city ?? "", quantity: String(order.lineItems.count), state: order.status ?? "", price: order.total ?? "0"))
}
}
ordersValue.append(OrderWithHeaders(headers: key , orderItems: item))
}

}

func getDatebyString(date :String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = dateFormatter.date(from: date)!
return date.formatted(.dateTime.year().month().day())
}

这是我的模型

struct Orderproperties: Codable  , Identifiable{
let id, parent_id: Int?
let status: String?
let currency: String?
let version: String?
let pricesIncludeTax: Bool
let discountTotal, discountTax: String?
let datePaid, datePaidGmt, dateCompleted,dateCompletedGmt : String?
let dateCreated , dateCreatedGmt , dateModified , dateModifiedGmt: String?
let shippingTotal, shippingTax, cartTax, total: String?
let totalTax: String?
let customerID: Int?
let order_key: String? }

但未安排的订单日期仍然随机出现

对字典进行排序是不可能的。这是因为它的数据结构。它没有索引,但它使用键的哈希来访问内存中的值。

你可以在字典上调用。sorted(by:>),但是它返回一个包含键和值的元组数组。因此,如果你直接在for循环中排序,它应该可以工作。

for (key, value) in dictionary.sorted(by: >) { ... }

最新更新