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
}
}
答案 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)