缺少调用参数的参数

时间:2017-04-26 23:35:55

标签: swift

swift(3)和xcode(8)的新手,我使用firebase在tableview中加载一些数据。当我尝试构建应用程序时,我收到错误:"在调用"中缺少参数wName的参数当我调用WhiskeyItem的一个实例时,在我的fetchWhiskey函数中。我无法弄清楚为什么会发生这种错误。谁能帮助我?

这是我的班级:

UserForms

这是我试图加载数据的表格视图:

import UIKit
class WhiskeyItem {
    let wName: String
    let wType: String

    init(wName: String, wType: String) {
        self.wName = wName
        self.wType = wType
    }
}

2 个答案:

答案 0 :(得分:4)

您的初始值设定项在调用时需要两个参数。

正确调用它看起来像这样:

let whiskeyItemInstance = WhiskeyItem(wName: "name", wType: "type")

如果您不想将参数传递给初始化程序,可以提供默认参数:

init(wName: String = "default name", wType: String = "default type") {

或使用完全没有参数的初始化程序:

init() {
    self.wName = "wName"
    self.wType = "wType"
}

或调用您已经创建的初始化程序,如下所示:

convenience init() {
    self.init(wName: "default name", wType: "default type")
}

或者你可以放弃初始化者:

class WhiskeyItem {
    let wName: String = "asdf"
    let wType: String = "asdf"
}

答案 1 :(得分:0)

如果您要继承类的初始化,则可以这样操作

class Room {
    var type: String

    var client: Client

    init(type: String, client: Client) {
        self.type = type

        self.client = client

    }

let unknown = Client() // Need to define it more precisely

    convenience init(type: String) {
        self.type = type

        self.client = unknown

    }

}

除此之外,您还可以执行以下方法

Room的初始化程序具有两个参数(类型和客户端),并且两个参数都没有指定的默认参数,因此必须将正确类型的参数传递给每个参数。客户的故事也一样。

let theClient = Client(name: "Thelonius", surname: "Monk")
let oneRoom = Room(type: "single", client: theClient)

有关更多更新:https://developer.apple.com/forums/thread/67555