sortinganyobject Swift 3的数组
我想sortinganyobject的数组,但无法做到这一点。我从Parse数据库以AnyObject格式获取一些数据。 根据以下数据,我想按“名称”sorting此AnyObject数组。 以下是我的代码 –
let sortedArray = (myArray as! [AnyObject]).sorted(by: { (dictOne, dictTwo) -> Bool in let d1 = dictOne["NAME"]! as AnyObject; // this line gives error "Ambiguous use of subscript" let d2 = dictTwo["NAME"]! as AnyObject; // this line gives error "Ambiguous use of subscript" return d1 < d2 })
myArray看起来像这样 –
{ LINK = "www.xxx.com"; MENU = Role; "MENU_ID" = 1; NAME = "A Name"; SUBMENU = "XXX"; "Training_ID" = 2; }, { LINK = "www.xyz.com"; MENU = Role; "MENU_ID" = 2; NAME = "B name"; SUBMENU = "jhjh"; "Training_ID" = 6; }, { LINK = "www.hhh.com"; MENU = Role; "MENU_ID" = 3; NAME = "T name"; SUBMENU = "kasha"; "Training_ID" = 7; }, { LINK = "www.kadjk.com"; MENU = Role; "MENU_ID" = 5; NAME = "V name"; SUBMENU = "ksdj"; "Training_ID" = 1; }, { LINK = "www.ggg.com"; MENU = Role; "MENU_ID" = 4; NAME = "K name"; SUBMENU = "idiot"; "Training_ID" = 8; }, { LINK = "www.kkk.com"; MENU = Role; "MENU_ID" = 6; NAME = "s name"; SUBMENU = "BOM/ABOM/BSM"; "Training_ID" = 12; }
任何帮助将非常感激。 谢谢!
为什么将数组转换为[AnyObject]
而不是将数组转换为[[String:Any]]
意味着Array
的Dictionary
并告诉编译器该数组包含Dictionary
作为对象。
if let array = myArray as? [[String:Any]] { let sortedArray = array.sorted(by: { $0["NAME"] as! String < $1["NAME"] as! String }) }
注意:由于您在数组的每个字典中都有带有String
值的NAME
键,所以我强制使用下标包装它。
它不是[AnyObject]
(我没有想法的数组),它是字典数组[[String:Any]]
。 更具体地说,这解决了这个错误。
在Swift 3中,编译器必须知道所有下标对象的具体types。
let sortedArray = (myArray as! [[String:Any]]).sorted(by: { (dictOne, dictTwo) -> Bool in let d1 = dictOne["NAME"]! as String let d2 = dictTwo["NAME"]! as String return d1 < d2 })