【发布时间】:2023-03-27 20:45:01
【问题描述】:
我正在尝试对这样列出的数组进行排序:
let array = ["02:00 AM", "01:00 AM", "01:00 PM", "01:01 AM", "01:01 PM", "03:00 AM"]
我可以多次在我的 userDefaults 中添加/更新提醒,但我希望它不仅按时间排序,而且按 AM/PM 值排序。这样数组看起来像这样:
["01:00 AM", "01:01 AM", "02:00 AM", "03:00 AM", "01:00 PM","01:01 PM"]
我该怎么做?在数组上使用.sort() 不起作用,因为它只会按时间排序,但我特别希望 AM 字符串在 PM 字符串之前。我将数组作为字符串,因为我认为它会更容易,但我发现这可能不是最好的方法。
【问题讨论】:
-
一种可能的解决方案是将原始数组拆分为两个数组,arrayAM 和 arrayPM,然后按照您想要的任何顺序对它们进行排序,然后将它们合并为一个数组。
-
考虑到夏令时问题,您应该使用真实日期而不是字符串。它还允许您对它们进行排序,因为
Date符合Comparable协议。