无法在数组中设置字典的值[Swift]

时间:2015-06-25 00:15:01

标签: arrays swift

我试图在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]]

    }
}

任何想法?
注意:这在操场上非常完美。

2 个答案:

答案 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"]

有关this apple documentation

的馆藏的更多详情

答案 1 :(得分:0)

我认为有两个问题。

首先,您声明numbersArray是一个泛型字典数组,这会使我的XCode崩溃。以下方法对我来说效果更好:

var numbersArray = [[String: Any]]()

其次,我猜createArray是struct中的一个方法,在这种情况下,你必须在其声明中使用mutating来允许它修改struct的属性。

mutating func createArray() {
    // ...
}