2017-03-15 179 views
-1
let dict1:NSMutableDictionary = ["no": "10", "name": "Joy" ,"age":39] 
let dict2:NSMutableDictionary = ["no": "33", "name": "Lily" ,"age":30] 
let dict3:NSMutableDictionary = ["no": "19", "name": "Candy","age":22] 
var arrPoint = [Any]() 
arrPoint.append(dict1) 
arrPoint.append(dict2) 
arrPoint.append(dict3) 

排序的NSMutableDictionary如何在没有元素进行排序?斯威夫特3

结果如下:

no = 10 , name = Joy 
no = 19 , name = Candy 
no = 33 , name = Lily 

回答

2

您可以使用它进行排序:

arrPoint = arrPoint.map { $0 as! NSMutableDictionary }.sorted { Int($0["no"] as! String)! < Int($1["no"] as! String)! } 

正如你可以看到有一大堆乱七八糟的在封闭回事。我必须首先将数组中的所有内容转换为NSMutableDictionary,将我从密钥"no"获得的字符串转换为整数并进行比较。有明显更好的方法。

如果可以,请构造一个结构体。也许叫它Employee? (你似乎创造员工的字典,他们每个人都有年龄,姓名和号码)

struct Employee { 
    var age: Int 
    var name: String 
    var number: Int 
} 

然后,你可以创建Employee阵列像这样对它们进行排序:

array = array.sorted { $0.number < $1.number } 
2

首先,不要在Swift中使用NSMutableDictionary。使用SWIFT原生类型:

let dict1 : [String:Any] = ["no": "10", "name": "Joy" ,"age":39] 
let dict2 : [String:Any] = ["no": "33", "name": "Lily" ,"age":30] 
let dict3 : [String:Any] = ["no": "19", "name": "Candy","age":22] 

var arrPoint = [[String:Any]]() 

arrPoint.append(dict1) 
arrPoint.append(dict2) 
arrPoint.append(dict3) 

没有排序与sort功能

arrPoint.sort(by: { ($0["no"] as! String) < $1["no"] as! String }) 

阵列不过我也建议在扫地的答案使用自定义的结构等。