我已经能够毫无问题地为 XCode 6.3 和 Swift 1.2 更新我的代码,直到我尝试从 UIHandler 修复我被覆盖的触摸输入功能。我将所有四个触摸功能的签名更新为以下内容:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
...
}
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
super.touchesMoved(touches, withEvent: event)
...
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
...
}
override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent) {
...
}
XCode 的自动完成实际上会在我编写这些方法/签名时提示它们,所以我知道 XCode 可以识别 Swift 1.2。但是,当我清理和构建时,我得到所有四个函数的“方法没有覆盖其父类(super class)中的任何方法”,以及在调用这些函数的“ super ”版本时出现类似的错误。
我在项目/build设置中没有发现任何突出的内容,我尝试清除 DerivedData 文件夹并重新启动我的计算机,但我仍然遇到这些错误。
最佳答案
所以我遇到了与您完全相同的错误消息,这让我发疯。我终于弄清楚了问题出在哪里……如果您按照我在网上执行的相同教程进行操作,那么您可能也会遇到这种情况。
原来我有一个名为 Set.swift 的 swift 文件...它定义了一个名为 Set 的类。
但是现在在 Swift 1.2 中,他们引入了自己的类 Set,所以我的类在我使用 Set<> 的任何地方都会引起冲突和这些错误(主要是在 touchesXXX 部分,但代码中还有一个地方我使用 Set,这就是我的线索)。所以我只是进入 Set.swift,并将类重命名为其他名称,然后一切都开始正确编译。
希望对您有所帮助!
关于ios - 试图升级到 Swift 1.2 时出现令人困惑的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29567459/