按字母顺序排列数组

我是swift新手。我正在尝试一个示例应用程序,在其中我需要按字母顺序实现数组的sorting。我得到json数据,并在数组中添加标题。现在,我想按字母顺序sorting这里是我的代码…..

func updateSearchResults(data: NSData?) { do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) if let blogs: NSArray = json["results"] as? [AnyObject] { print(blogs) for blog in blogs { if let name = blog["original_title"] as? String { names.addObject(name) } } print(names) **let sortedArray = sorted(names, { (str1: String, str2: String) -> Bool in return str1.toInt() < str2.toInt()** // Here I am getting the Error Message }) } } catch { print("error serializing JSON: \(error)") } } 

我得到的错误消息是“不能调用'sorting'types的参数列表((NSMutableArray,(String,String) – > Bool)'”

我尝试了很多来实现这一点,但我没有find解决scheme。 任何人都可以帮我解决这个问题。 提前致谢。

首先使用下面的代码行将NSMutableArray转换为数组。

  let swiftArray = mutableArray as AnyObject as! [String] 

使用下面的代码行来sorting数组。

 var sortedArray = names.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } 

检查下面的链接sort闭包。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html

更新Swift 3.0

 var sortedArray = swiftArray.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending } 

使用这个简单的代码行来sorting你的数组

  let sortedNames = names.sort { $0.name < $1.name } 

对于Swift 4,你只能使用它

 let sortedNames = names.sorted(by: <) 

Swift3

 var names = [ "Alpha", "alpha", "bravo"] var sortedNames = names.sort { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending } print(sortedNames) //Logs ["Alpha", "alpha", "bravo"] 

对于一组对象:

 items = items.sorted(by: { (item1, item2) -> Bool in return item1.product.name.compare(item2.product.name) == ComparisonResult.orderedAscending }) 

Swift 3解决scheme:

 let yourStringArray = [ "beTA", "ALPha", "Beta", "Alpha"] var sortedArray = yourStringArray.sorted() // Result will be ["ALPha", "Alpha", "Beta", "beTA"] 

信给jjatie

试试这个

 var names = [ "Alpha", "alpha", "bravo"] var sortedNames = names.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } print(sortedNames) //Logs ["Alpha", "alpha", "bravo"]