按字母顺序排列数组
我是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"]