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

时间:2015-05-23 23:26:22

标签: arrays swift sorting localization case-sensitive

我想使用另一种比较方法(如localizedCompare,caseInsensitiveCompare或localizedCaseInsensitiveCompare)对我的swift struct数组进行排序。 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 { $0.title < $1.title }
    }
}

一旦调用,上面的代码就会产生[Berry,apple,apple]。不能接受的。有什么建议吗?

1 个答案:

答案 0 :(得分:23)

您可以通过比较标题lowercaseString轻松解决它:

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

使用localizedCompare它应该如下所示:

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