2017-03-15 174 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 }) 

陣列不過我也建議在掃地的答案使用自定義的結構等。