ios - 创建和调用类初始化程序并传入文字值 Swift 时调用中的额外参数

标签 ios xcode class swift variables

我在 swift 中遇到了一个小问题。假设我有一个名为 Pet 的类(class)。 Pet 有一个名称和噪音变量,创建方式如下:

class Pet
{
    var name : String = ""
    var canMakeNoise : Bool = true
}

现在,当我调用初始化类来创建一只猫时,我可以很容易地这样做:

var cat: Pet()
cat.name = "Garfield"
cat.canMakeNoise = false

这很顺利,但是当尝试使用像这样的文字值直接传递它时:

let cat : Pet("Garfield",true) 

let cat : Pet(name:"Garfield",canMakeNoise:true)

我收到这个错误:

Swift Compile Error - Extra Argument in call

这是为什么呢?我该如何解决?提前致谢。

最佳答案

如果你想给初始化器添加参数,你需要指定一个新的初始化函数而不是依赖默认函数。在您的情况下,您可以这样做:

class Pet {
    var name : String = ""  
    var canMakeNoise : Bool = true

    init( name : String, canMakeNoise : Bool ) {
       self.name = name
       self.canMakeNoise = canMakeNoise
    }
}

var kitty = Pet(name: "Cat", canMakeNoise: true)

关于ios - 创建和调用类初始化程序并传入文字值 Swift 时调用中的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30060102/

相关文章:

ios - 自定义 iOS SDK 获得 Apple 的批准

c++ - C++ 中灵活的类行为

c - 将 FILE * 读入类中

iphone - CALayer 给每个子层投下阴影,如何去除?

ios - 分离约束和 UI 元素(UIView、UIButton、UITextField 等)声明以分离 swift 文件

ios - 使用 XLPagerTabStrip 在 child 之间传递数据

ios - 我如何将 v1.0 作为 v1.1 重新提交,以便我可以在 iTunes connect 中更改屏幕截图、关键字等?

java - Java中如何访问ArrayList中存储的值?

IOS:xcodebuild 命令在build设置中禁用位码

ios - 当推送到另一个 ViewController 时如何隐藏 UINavigationBar?