尝试升级到Swift 1.2时混淆编译错误

我已经能够在没有太多问题的情况下更新我的XCode 6.3和Swift 1.2的代码,直到我尝试从UIHandler修复我的重写触摸输入函数。 我将所有四个触摸function的签名更新为以下内容:

override func touchesBegan(touches: Set, withEvent event: UIEvent) { super.touchesBegan(touches, withEvent: event) ... } override func touchesMoved(touches: Set, withEvent event: UIEvent) { super.touchesMoved(touches, withEvent: event) ... } override func touchesEnded(touches: Set, withEvent event: UIEvent) { ... } override func touchesCancelled(touches: Set!, withEvent event: UIEvent) { ... } 

当我去写它们时,XCode的自动完成实际上会建议这些方法/签名,所以我知道XCode可以识别Swift 1.2。 但是,当我清理和构建时,对于所有四个函数,我得到“方法不会覆盖其超类中的任何方法”,以及调用这些函数的“超级”版本时的类似错误。

我没有在项目/构建设置中找到任何突出的东西,我尝试清除DerivedData文件夹以及重新启动计算机,但我仍然遇到这些错误。

所以我打出了与你相同的错误信息,这让我发疯了。 我终于弄明白了问题是什么……如果你在网上遵循了同样的教程,它可能也会让你受益匪浅。

事实certificate我有一个名为Set.swift的快速文件…它定义了一个名为Set的类。

但是现在在Swift 1.2中,他们引入了他们自己的类Set,所以我的类引起了碰撞和这些错误,无论我使用Set <>(主要是在touchesXXX部分,但在我使用Set的代码中有另外一个点,这就是我的意思。 所以我刚进入Set.swift,并将该类重命名为其他东西,然后它们都开始正确编译。

希望有所帮助!

您是否尝试完全清理项目(CMD + ALT + SHIFT + K)?

我不得不这样做才能让它编译。

超级函数调用必须在最后:

 override func touchesBegan(touches: Set, withEvent event: UIEvent) { \\ Your code super.touchesBegan(touches, withEvent: event) }