Swift单元测试无法识别新的类初始化程序

时间:2015-01-14 19:18:14

标签: ios objective-c xcode swift

我在Swift类上更改了初始化程序签名。我的其他快速类认可了这个改变,但是当我更新方法调用

时,我的单元测试类给了我一个错误
Extra argument 'bundle' in call

这是我的新初始化程序签名:

var vc = ListController(nibName: nil, bundle: nil, contractor: theContractor)

旧的是:

var vc = ListController(nibName: nil, bundle: nil, contractor: theContractor, estimate: theEstimate)

我尝试过的事情:

  1. 清理项目
  2. 从单元测试目标和测试目标的编译源中删除并重新添加了ListController和测试类
  3. 删除了项目的派生数据
  4. 从头开始完全重写了测试类,只是为了把它放在一个新的文件名下
  5. 现在的底线是我的测试类无法识别初始化程序签名更改。

    ListController是用Swift和测试类编写的。

    即使自动完成也会输入正确的方法签名。但是如果你在方法签名上做了CMD + Space,它会说“找不到符号”。

1 个答案:

答案 0 :(得分:2)

来自Sergiy Salyuk here

  

Swift使继承的初始化程序无法访问您的客户端   添加指定的初始值设定项时的派生类。它看起来很相似   继承的方法/数据在C ++中的私有继承   隐式移动到“私人”类部分。原因很简单:   如果有自定义初始化程序,那么您的类可能需要   这个初始化器构造类“不变”。但有一个错误:   如果您创建从UITableViewController派生的类并添加自定义   调用super.init(style :)的初始化程序将失败并使用   未实现的初始化程序'init(nibName:bundle :)'

听起来你遇到了同样的问题?