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 }
我想使用另一种比较方法(如 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 }