Arrays 在Swift中对字符串数组进行排序

Arrays 在Swift中对字符串数组进行排序,arrays,swift,Arrays,Swift,我想根据它们拥有的字符数从多到少对代码进行排序。例如,Daniella有8个角色,因此她将是列表中的第一个。我想得到的结果是 [Daniella,Barry,Chris,Alex,Ewa]试试这个: let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] func backwards(s1: String, s2: String) -> Bool { return s1 > s2 } var reversed = n

我想根据它们拥有的字符数从多到少对代码进行排序。例如,Daniella有8个角色,因此她将是列表中的第一个。我想得到的结果是 [Daniella,Barry,Chris,Alex,Ewa]

试试这个:

let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backwards(s1: String, s2: String) -> Bool {
    return s1 > s2
}
var reversed = names.sort(backwards)
print(reversed)
var ascending = names.sort({ (s1: String, s2: String) -> Bool in
    return s1 < s2
})
print(ascending)
let sortAscending = { (s1: String, s2: String) -> Bool in
    return s1 < s2
}
ascending = names.sort(sortAscending)

我应该分类还是应该分类?如果声明为var,则使用sort对原始数组进行排序;如果让你的代码甚至无法编译。使用sorted可以保留原始数组,并返回一个新的、正确排序的数组;对let和var有效。

名称是不可变的。你需要使用sortedmethodI知道:我想为排序数组取个好名字,但放弃了哈哈…他的意思是你需要叫names.sorted而不是names.sort。我认为您当前的代码无法编译。他也可以使用sort,但他需要将数组声明为variableok谢谢!要获得我的输出,我只需要用升序替换名称。嘿,伙计,你可能还想检查下面的排序与排序讨论-我认为你的代码根本不会编译:我使用了var sorted=ascending.sort{$0.characters.count>$1.characters.count},它可以工作,你是说排序,对吗?当我使用排序时,我得到了一个错误,但没有错误sort@LeoDabus…不正常:他正在使用sort并期望返回值,这毫无意义,即使在对可变集合进行就地排序时也是如此。顺便问一下,在这种情况下,Swift是否会返回一个空元组aka,Void?这就解释了为什么他的代码可以编译。。。
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
let sortedNames = names.sorted { $0.characters.count > $1.characters.count }
print(sortedNames)