Подтвердить что ты не робот

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]. Неприемлемо. Любые предложения?

4b9b3361

Ответ 1

Вы можете легко решить его, сравнив заголовок lowercaseString следующим образом:

DataStruct.items.sort { $0.title.lowercaseString < $1.title.lowercaseString }

используя localizedCompare, он должен выглядеть следующим образом:

DataStruct.items.sort { $0.title.localizedCompare($1.title) == .OrderedAscending }