Как отсортировать строковый массив дат - PullRequest
1 голос
/ 15 июня 2019

Я хочу отсортировать массив в порядке возрастания. Даты в строковом формате

Optional(["2019-07-08", "2019-07-09", "2019-07-10", "2019-07-11", "2019-07-12", "2019-07-02"])

Я пытаюсь использовать приведенный ниже код, но он не работает.

aryEventTime = aryEventTime.sorted(by: { ($0 as AnyObject).date.compare($1.date) == ComparisonResult.orderedAscending })


aryEventTime = aryEventTime.sorted(by: {
            ($0 as AnyObject).date.compare(($1 as AnyObject).date) == .orderedDescending}) as? NSMutableArray

Ответы [ 3 ]

2 голосов
/ 15 июня 2019

Я бы не советовал применять лексикографическую сортировку по датам. Достаточно просто разобрать эти строки для правильных Date объектов и отсортировать по ним:

let dateStrings = Optional(["2019-07-08", "2019-07-09", "2019-07-10", "2019-07-11", "2019-07-12", "2019-07-02"])

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let sortedDates = dateStrings?.compactMap(formatter.date(from:)).sorted()
1 голос
/ 15 июня 2019

Я получил ответ:

let sortedArray = aryEventTime.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending }
0 голосов
/ 15 июня 2019

array из String, который у вас есть,

let arr = ["2019-07-08", "2019-07-09", "2019-07-10", "2019-07-11", "2019-07-12", "2019-07-02"]

Вместо преобразования String в Date вы можете просто отсортировать этот массив, используя sorted(), т.е.

let sortedArr = arr.sorted()
print(sortedArr)

Выход:

["2019-07-02", "2019-07-08", "2019-07-09", "2019-07-10", "2019-07-11", "2019-07-12"]

Примечание: date strings может быть sorted без преобразования только в особых случаях, таких как этот. Например, если strings в формате yyyy-dd-MM, то простой string sorting не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...