我想使用另一种比较方法(如 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 { $0.title < $1.title }
}
}
调用后,上述代码会生成 [Berry, apple, apple]。 Not Acceptable 。有什么建议吗?
最佳答案
通过比较title lowercaseString 可以轻松解决,如下:
DataStruct.items.sort { $0.title.lowercaseString < $1.title.lowercaseString }
使用 localizedCompare 它应该是这样的:
DataStruct.items.sort { $0.title.localizedCompare($1.title) == .OrderedAscending }
关于arrays - Swift:使用替代比较对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418553/