我想将下面的代码转换为swift,实际上我不想使用nsdictionary的allKeys丢失键的顺序
NSArray *keys = [myDictionary allKeys];
keys = [keys sortedArrayUsingComparator:^(id a, id b) {
return [a compare:b options:NSNumericSearch];
}];
你可以在 Swift 中做同样的事情:
let myDictionary = ["100" : "foo", "2" : "bar"]
let keys = myDictionary.keys.sort {
$0.compare($1, options: .NumericSearch) == .OrderedAscending
}
print(keys) // ["2", "100"]
myDictionary.keys
给出了所有字典的(懒惰集合(键,可以排序。相比之下 sortedArrayUsingComparator
(它需要一个块返回-1
,0
,或+1
(,sort()
方法采用闭包返回一个布尔true
值,如果 LHS "小于"于RHS。
适用于 Swift 3.0 版本
let myDictionary = ["100" : "foo", "2" : "bar"]
let keys = self.myDictionary.allKeys.sorted {
($0 as AnyObject).compare($1 as! String, options: .numeric) == .orderedDescending
}
print(keys) // ["2", "100"]
.orderedDescending
用于按降序对数组进行排序,而 as .orderedAscending
用于按升序对数组进行排序。