我试图在swift中设置数组内的字典值,但是我收到错误。
它说Cannot pass immutable value of type '[Dictionary]' to mutating binary operator '+='
我的代码如下:
// Declare the array
var numbersArray:[Dictionary] = [Dictionary<String, Any>]()
...更多代码......
func createArray() {
for var iteration = 0; iteration < 75; iteration++ {
//Add numbers to the array
// May be used to set column
var column:String
switch iteration {
case 0...14:
column = "B"
numbersArray += [["Randomized" : false, "Column" : "B", "Origin" : 0]]
case 15...29:
column = "I"
numbersArray += [["Randomized" : false, "Column" : "I", "Origin" : 0]]
case 30...44:
column = "N"
numbersArray += [["Randomized" : false, "Column" : "N", "Origin" : 0]]
case 45...59:
column = "G"
numbersArray += [["Randomized" : false, "Column" : "G", "Origin" : 0]]
case 60...74:
column = "O"
numbersArray += [["Randomized" : false, "Column" : "O", "Origin" : 0]]
default:
column = "Out Of Bounds"
numbersArray += [["Randomized" : false, "Column" : "Out Of Bounds", "Origin" : 0]]
}
// numbersArray1 += [["Randomized" : false, "Column" : String(column), "Origin" : 0]]
}
}
任何想法?
注意:这在操场上非常完美。
答案 0 :(得分:1)
对于不兼容项的数组(类型可以更改),不能使用+ =,需要将值附加到数组中,如下所示:
var numbersArray = [Dictionary<String, Any>]()
numbersArray.append(["Randomized" : false, "Column" : "B", "Origin" : 0])
如果你有一个Strings或Int的数组
,你可以使用+ =var numbersArray = [String]()
NumbersArray += ["I am always a string"]
的馆藏的更多详情
答案 1 :(得分:0)
我认为有两个问题。
首先,您声明numbersArray是一个泛型字典数组,这会使我的XCode崩溃。以下方法对我来说效果更好:
var numbersArray = [[String: Any]]()
其次,我猜createArray是struct
中的一个方法,在这种情况下,你必须在其声明中使用mutating
来允许它修改struct
的属性。
mutating func createArray() {
// ...
}