gpt4 book ai didi

Swift - 通话中的额外参数

转载 作者:IT王子 更新时间:2023-10-29 04:58:34 25 4
gpt4 key购买 nike

我正在尝试从 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)
}
}

瞧,没有更多的错误。

关于Swift - 通话中的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com