我试图从 DetailViewController 类调用 ViewController 类中声明的函数。
尝试调试“调用中的额外参数”错误时会弹出。
在 ViewController 类中:
func setCity(item : Cities, index : Int)
{
citiesArray!.removeObjectAtIndex(index)
citiesArray!.insertObject(item, atIndex: index)
}
详细查看ViewController类
// city of type Cities
ViewController.setCity(city ,5 ) //Error: "Extra argument in call"
这很简单,但我很困惑。
在某些情况下,如果参数的类型与函数声明的类型不匹配,即使调用看起来正确,也会给出“调用中的额外参数”。从您的问题来看,您似乎正在尝试将实例方法作为类方法调用,我发现这是其中一种情况。例如,此代码给出完全相同的错误:
class Foo {
func name(a:Int, b: Int) -> String {
return ""
}
}
class Bar : Foo {
init() {
super.init()
Foo.name(1, b: 2)
}
}
您可以通过将 setCity 的声明更改为class func setCity(...)
(评论中提到);这将允许ViewController.setCity
按预期打电话去上班,但我猜你想要setCity
是一个实例方法,因为它似乎会修改实例状态。您可能想要获取 ViewController 类的实例并使用它来调用 setCity 方法。使用上面的代码示例进行说明,我们可以这样更改 Bar:
class Bar : Foo {
init() {
super.init()
let foo = Foo()
foo.name(1, b: 2)
}
}
瞧,不再有错误了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)