按键值sorting词典数组

我有一个字典数组,我想按字母顺序sorting,每个字典中的“itemName”键。 我怎么能在Swift中做到这一点?

我想sortingitemsArray。

let array = PFUser.currentUser()?.objectForKey("Collections") as! [[String : AnyObject]] let collectionsDictionary = array[0] itemsArray = collectionsDictionary[self.title!] as! [[String : AnyObject]] for dictionary in itemsArray { itemNames.append(dictionary["itemName"] as! String) itemUPC.append(dictionary["UPC"] as! String) pricePaid.append(dictionary["pricePaid"] as! String) currentPrice.append(dictionary["currentPrice"] as! String) model.append(dictionary["model"] as! String) if (dictionary["image"] != nil) { imagesArray.append(dictionary["image"] as! PFFile) } else { imagesArray.append(nil) } } 

你可以求助于NSArraysortUsingDescriptorsfunction:

 let sortedArray = (itemsArray as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "itemName", ascending: true)]) as [[String:AnyObject]] 

不是非常迅速,你失去了types安全,但这是它的工作。

顺便说一下,你的代码中有很多强制转换,可能会导致应用程序崩溃,您应该考虑切换到可选的转换。

可能是这样的,使用sort

 let sortedArray = itemsArray.sort { $0["itemName"] < $1["itemName"] } 

其中“$ 0”和“$ 1”分别表示数组中的每个字典及其后继者。


如果编译器抱怨这些types,因为它不知道这个键的值是一个string,你可以像这样转换(如@C​​ristik在注释中所说的):

 let sortedArray = itemsArray.sort { ($0["itemName"] as? String) < ($1["itemName"] as? String) } 

我有一个字典数组,我正在按字母顺序排列我的数组,每个字典中的“名字”键。 你也可以通过将你的数组名称放在这个代码和你的keyName中来sorting你的数组

/ *

  let descriptor: NSSortDescriptor = NSSortDescriptor(key: "firstname", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:))) let sortedResults: NSArray = yourArrayName.sortedArrayUsingDescriptors([descriptor]) self.user_Array = NSMutableArray(array: sortedResults) 

* /

希望它可以帮助你。