Swift, allKeys, array, dictionary, order



我想将下面的代码转换为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(它需要一个块返回-10,或+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 用于按升序对数组进行排序。

最新更新