swift Invalid Redeclaration

时间:2014-12-05 07:36:39

标签: ios swift

func dropShape() {
        if let shape = fallingShape {
            while detectIllegalPlacement() == false {
                shape.lowerShapeByOneRow()
            }
            shape.raiseShapeByOneRow()
            delegate?.gameShapeDidDrop(self)
        }
    }

嗨,我正在接受这个' dropShape()'的无效重新声明。我错了什么任何人都可以帮助我

4 个答案:

答案 0 :(得分:33)

该错误消息表示您已创建了两个具有相同名称的函数。

enter image description here

您不能对功能使用相同的名称和相同的签名。是函数重载,这意味着您可以使用具有不同参数的相同名称。您可以使用相同的名称创建任意数量的功能。 拇指规则是每个重载功能必须具有不同的参数。

例如:

func dropShape() {        
}

func dropShape(points: CGPoint) {        
}

答案 1 :(得分:23)

我遇到了同样的问题,我通过删除编译源中的额外文件解决了这个问题。

  1. 转到项目根目录。
  2. 转到构建阶段
  3. 点击编译来源,检查已添加两次的文件并删除其中一个。
  4. 这应该可以解决你的问题。

答案 2 :(得分:1)

我刚才有这个确切的错误消息。对我来说,这是 struct 冲突。

对于相同范围内的任何两种类型声明,您将收到错误,例如:如果您使用任何声明以下两种类型中的任何一种,您将收到错误

class employee{...}
struct employee{...}
func employee(){...}
protocol employee{...}

它不仅适用于类,结构或函数,而是适用于所有内容,因为func s,struct s,enum s,protocol s都是 { Swift中的{3}}

答案 3 :(得分:0)

当您不导入UIKit并且类名应该是唯一的时,会发生此错误,因此请确保添加import UIKit并且函数或类具有唯一的名称。