Swift编译器无法区分两个初始化器

时间:2018-05-03 19:42:20

标签: swift

基本上,我有一个名为UserData的类和多个初始化器。特别是,我有一个复制初始化程序,如下所示:

init (_ origin: UserData){
    // copy over everything
}

当我需要从文件中读取数据时使用的另一个初始化器:

convenience init (Read _: Bool) {
    // read stuff and call another initializer
}

然后我总是遇到编译器错误,说我每次尝试var something = UserData(true)时都无法将Bool转换为UserData。 我尝试添加标签,但编译器说extroneous标签,因为只有一个参数。我可以通过向第二个初始化程序添加另一个随机参数来解决此问题。但是为什么编译器总是试图解释对某些东西的调用与该类型不匹配,而另一个与该类型匹配?

1 个答案:

答案 0 :(得分:0)

Swift使用一个参数区分两个初始化程序没有问题。错误是因为定义了第二个错误。它应该是:

convenience init (_ read: Bool) {
    // read stuff and call another initializer
}