无法在Swift中将字符串追加到可变数组

时间:2018-07-25 20:27:51

标签: arrays swift struct append

上下文-我目前正在学习Swift Struct。因此,我决定在Playground中创建自己的Phone结构。 (见下文)

问题- downloadApp结构上的phone方法引发以下错误。Cannot use mutating member on immutable value: 'self' is immutable

期待结果-和平地将新字符串添加到我的apps属性中,该属性是一个字符串数组。

快捷代码

struct Phone {
    let capacity : Int
    let Brand : Sting
    var name: String
    let model: String
    var apps: [String]
    var contacts: [String]

    var formatCapacity: String {
        return "\(capacity)GB"
    }

    func downloadApp(name: String){
        apps.append(name) // ERROR 
    }
}

1 个答案:

答案 0 :(得分:1)

您只需要将downloadApp标记为mutating。该问题是由于以下事实引起的:downloadAppstruct类型声明,这是一种值类型,因此,如果您更改了apps类型的任何属性(即此处的mutating数组),结构,您实际上是在改变结构本身。通过将函数标记为mutating func downloadApp(name: String){ apps.append(name) } ,编译器允许通过类型的成员函数对结构进行此类修改。

RepeatVector