基本上,我有一个名为UserData的类和多个初始化器。特别是,我有一个复制初始化程序,如下所示:
init (_ origin: UserData){
// copy over everything
}
当我需要从文件中读取数据时使用的另一个初始化器:
convenience init (Read _: Bool) {
// read stuff and call another initializer
}
然后我总是遇到编译器错误,说我每次尝试var something = UserData(true)
时都无法将Bool转换为UserData。
我尝试添加标签,但编译器说extroneous标签,因为只有一个参数。我可以通过向第二个初始化程序添加另一个随机参数来解决此问题。但是为什么编译器总是试图解释对某些东西的调用与该类型不匹配,而另一个与该类型匹配?
答案 0 :(得分:0)
Swift使用一个参数区分两个初始化程序没有问题。错误是因为定义了第二个错误。它应该是:
convenience init (_ read: Bool) {
// read stuff and call another initializer
}