无法将已排序的数组分配给Swift中的变量

时间:2016-07-02 08:06:05

标签: swift

我试图对一个数组进行排序并将其分配给另一个数组。两个数组的定义相同:

var arrayA: [String: [Int]] = [:]
var sortedArrayA:[String: [Int]] = [:]

sortedArrayA = arrayA.sort{ $0.0 < $1.0 } // error on this line.

我遇到了这个错误:

  

不能将类型[(String,[Int])]的值赋给[String:[Int]]

类型

我想要达到的目的是制作这本词典:

["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]] 

这样排序:

["a" : [2,3,3], "b" : [4,4,4], "c" : [1,2,3]] 

如果它出现了。

3 个答案:

答案 0 :(得分:1)

是的,我知道 Swift中的闭包很酷。但它们不够酷,无法推断出你想要从这段代码中对数组进行排序:

var arrayA: [Int] = []
var sortedArrayA:[Int] = []

sortedArrayA = arrayA{ $0 < $1 }

你的代码更糟糕!你甚至没有声明数组!您声明的是假定未被排序的字典!

无论如何,只要学习数组的语法:它是一对围绕你想要的数组类型的方括号。因此,Int的数组将为[Int]String的数组将为[String]

知道了吗?凉。

“但我只有字典,但是......”你伤心地说。如果您只有字典,则可以对其keysvalues进行排序。我想你可能需要对值进行排序。

let values = someDictionary.values // if you want to sort keys, use .keys instead

现在您需要实际调用 sort方法才能进行排序。只是写一个闭包是而不是才能起作用。

let sortedValues = values.sort(<)

当然,您可以使用任何阵列执行此操作!

let array = [3, 2, 1]
let sortedArray = array.sort(<)

答案 1 :(得分:0)

尝试找出grp.Key.Name中的数组排序,在swift中你可以使用Playground对数组进行排序。例如,对于整数数组:

.sort()

答案 2 :(得分:0)

在你的问题中你说你使用数组但实际上你正在使用字典。你的语法是错误的。你可以像这样声明空字典:var dictionary: [String:Int] = ()。但要回答你真正的问题,你可以这样做:

    let arrayA = ["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]]

let sortedDict = arrayA.sort { $0.0 < $1.0 }
print("\(sortedDict)")