Ios 关于将函数转换为Swift 3的奇怪问题

Ios 关于将函数转换为Swift 3的奇怪问题,ios,swift,swift2,swift3,Ios,Swift,Swift2,Swift3,我在Swift 2中有一个功能: Xcode提供将其转换为Swift 3。我按下红点将其转换为: open override func draw(_ rect: CGRect) { 但是,现在它给了我下一个错误: Invalid redeclaration of 'draw' 如何将其正确转换为Swift 3?假设您的类是UIView,我认为您的方法签名应该是: override func draw(_ rect: CGRect) 它将在Swift 3上工作。此代码(您的): 这里编译得很

我在Swift 2中有一个功能:

Xcode提供将其转换为Swift 3。我按下红点将其转换为:

open override func draw(_ rect: CGRect) {
但是,现在它给了我下一个错误:

Invalid redeclaration of 'draw'

如何将其正确转换为Swift 3?

假设您的类是
UIView
,我认为您的方法签名应该是:

override func draw(_ rect: CGRect)
它将在Swift 3上工作。

此代码(您的):

这里编译得很好

我怀疑您已经在类中实现了
draw()


否则,请编辑、清除和删除派生数据。

Xcode正确转换的函数

open override func draw(_ rect: CGRect)

我认为在Xcode转换drawRect之前和转换drawRect时,您有两个同名的函数。现在我自己试过了,像上面这样声明draw函数不会出现错误。但是,当声明这样的函数2次时,给出了完全相同的错误。

这是全局函数还是类型上的方法?另外,您是否已经检查了编译器所说的内容,并查看了同一作用域中是否还有另一个函数在类内部具有类型签名
draw(:)
?@DanielHall it方法。不,没有另一个draw(:)编译器只显示我在这里发布的函数。@Mighty Codder,你能检查我提供的解决方案是否有效吗?我想你是在试图重写继承自
UIView
的类中的一个方法,不是吗?@Mighty Codder,也许你可以把整个类的代码放在这里作进一步的参考?@lmiguelvargasf它是从NSUIView继承的,我甚至把它改成了UIView。不幸的是,您的解决方案不起作用。XCode强制我在func前面添加open,然后说draw@shalloThought,使用
open
的目的是什么?
open
在这种情况下不是必需的。我只想声明最初发布的代码是有效的。请在此答案中查找有关
打开
访问级别的更多信息:
class MyView: UIView {
    open override func draw(_ rect: CGRect) {
        //
    }
}
open override func draw(_ rect: CGRect)