Swift:使用替代比较对数组进行排序

Swift: sort array with alternative comparison

我想使用另一种比较方法(如 localizedCompare、caseInsensitiveCompare 或 localizedCaseInsensitiveCompare)对我的 swift 结构数组进行排序。 swift 标准字符串数组排序函数将所有大写字母排在小写字母之前。这是我的代码:

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 { [=11=].title < .title }
    }
}

调用后,上述代码会生成 [Berry, apple, apple]。不可接受的。有什么建议吗?

你可以通过如下方式比较title lowercaseString轻松解决:

DataStruct.items.sort { [=10=].title.lowercaseString < .title.lowercaseString }

使用 localizedCompare 它应该如下所示:

DataStruct.items.sort { [=11=].title.localizedCompare(.title) == .OrderedAscending }