arrays - 无法将字符串 append 到 Swift 中的可变数组

标签 arrays swift struct append

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

问题 - phone 结构上的 downloadApp 方法抛出以下错误。不能在不可变值上使用可变成员:'self' 是不可变的

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

Swift代码

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 
    }
}

最佳答案

您只需将downloadApp 标记为mutating。该问题是由于 downloadApp 是在 struct 类型中声明的,这是一种值类型,因此如果您更改任何属性(即 apps array here) 的结构,你实际上改变了结构本身。通过将函数标记为 mutating,编译器允许通过该类型的成员函数对结构进行此类修改。

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

关于arrays - 无法将字符串 append 到 Swift 中的可变数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527157/

相关文章:

c++ - C++ 中结构的存储持续时间和成员初始化

c - 我无法访问结构中的对象

c - 生成指针数组时出错

javascript - Jquery 数组混淆中的 .map() 函数

C 数组指针递增

ios - 从 '[Any]?' 转换为无关类型 '[String : String?]' 总是失败问题

ios - WKWebView:没有 Javascript 的 scalesPageToFit 行为

javascript - 尝试在 Raphael 对象上使用查询每个循环

java - 将对象数组传递给静态方法时出现空指针异常

ios - 如何以编程方式更改标签栏高度