Swift: сортировка массива с альтернативным сравнением
Я хотел бы отсортировать мой массив с быстрой структурой, используя другой метод сравнения (например, localizedCompare, caseInsensitiveCompare или localizedCaseInsensitiveCompare). Быстрая стандартная функция сортировки строковых массивов упорядочивает все прописные буквы перед строчными буквами. Здесь мой код:
import Foundation
struct DataStruct {
struct Item {
let title: String
let number: Int
}
static var items = [
Item(title: "apple", number: 30),
Item(title: "Berry", number: 9),
Item(title: "apple", number: 18)]
}
class DataFunctions {
func sortItemsArrayTitle() {
DataStruct.items.sort { $0.title < $1.title }
}
}
После вызова, приведенный выше код приводит к [Berry, apple, apple]. Неприемлемо. Любые предложения?
Ответы
Ответ 1
Вы можете легко решить его, сравнив заголовок lowercaseString следующим образом:
DataStruct.items.sort { $0.title.lowercaseString < $1.title.lowercaseString }
используя localizedCompare, он должен выглядеть следующим образом:
DataStruct.items.sort { $0.title.localizedCompare($1.title) == .OrderedAscending }