加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift – 调用中的额外参数

发布时间:2020-12-14 06:08:39 所属栏目:百科 来源:网络整理
导读:我试图从DetailViewController类调用ViewController类中声明的函数。 当试图调试“额外参数调用”错误弹出。 在ViewController类中: func setCity(item : Cities,index : Int){ citiesArray!.removeObjectAtIndex(index) citiesArray!.insertObject(item,at
我试图从DetailViewController类调用ViewController类中声明的函数。

当试图调试“额外参数调用”错误弹出。

在ViewController类中:

func setCity(item : Cities,index : Int)
{

    citiesArray!.removeObjectAtIndex(index)
    citiesArray!.insertObject(item,atIndex: index)
}

在detailViewController类中

// 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)
    }
}

Voila,没有更多的错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读