У меня есть Array
, содержащие значения, как 7-4.json
, 87-1.json
и 102-4.json
и хотите отсортировать его (по возрастанию). Я использовал следующий код:Swift: Как отсортировать массив <String>
var fileNames = ["7-4.json", "87-1.json", "102-4.json"]
fileNames = fileNames.sort{ $0 < $1 }
print(fileNames)
, что приводит к:
["102-4.json", "7-4.json", "87-1.json"]
Так он не работал, как я аспектирован. Как я могу сортировать его как 7-4, 87-1, 102-4?
Вы будете нуждаться в пользовательскую функцию сортировки для таких ситуаций, чтобы иметь дело с конкретным форматом строки. – erdekhayser
Просто чтобы вы знали, почему он это делает: он сортирует их как строки, а не числа, и поэтому сортирует по символу по характеру. –
'let array2 = array.sort {$ 0.compare ($ 1, options: .NumericSearch) == .OrderedAscending}' сделал работу для меня – ixany