当前位置: 首页 > 面试题库 >

Swift-通话中的额外参数

劳英华
2023-03-14
问题内容

我试图从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)
    }
}

瞧,再也没有错误。



 类似资料:
  • 问题内容: 我有两个标签,Label1和Label2。我想通过创建两个标签的UITTapRecognizer创建UITTapRecognizer,以使用传递参数的选择器来调用同一个函数,从而使打印出哪个标签的功能单一。下面是完成此操作的漫长方法,虽然比较麻烦,但可以正常工作。如果我知道如何将参数(Int)传递给选择器,那将是一个更干净的选择。 有没有办法修改选择器方法,以便我可以做类似的事情 问题

  • 所以我想学习SwiftUI和Combine。我通常通过制作一个简单的小费计算器来开始新技术。 我似乎得到了一个随机的“调用中的额外参数”编码时出错这是我的SwiftUI文件 然而,如果我在TipView主体上添加另一个视图(任何视图),我似乎会得到一个“调用中的额外参数”错误。 这里是错误的图片 有人知道是怎么回事吗?

  • 这是我问的新问题,因为我还没有得到任何答案。 我正在使用亚马逊SNS Push向我注册的设备发送推送,一切都很好,我可以在我的应用程序上注册设备,可以发送推送等。我面临的问题是,当我通过推送打开我的应用程序时,我想打开一个特定的页面。我想发送一些额外的有效载荷参数,但我不能这样做。 我试过这个链接:-http://docs.aws.amazon.com/sns/latest/api/API_Pub

  • 这似乎是一个常见的问题,我浏览了我已经可以找到的所有相关问题:活动没有获得新的意图,为什么没有在android通知意图中发送额外的数据(整数)?,通知传递旧的意图额外内容,无法在通知中放置意图的额外内容,android未决意图通知问题;但仍然无法解决这个问题。 问题是一样的。我设置了一个带有一些额外信息的PendingIntent通知,但我在另一边没有得到它。 以下是生成通知的代码: 另一方面:

  • 问题内容: 我有以下功能。WordPress功能,但这实际上是一个PHP问题。它们根据每个对象的元数据中的属性对我的对象进行排序。 我想在第一个函数中传递一个字符串。这将使我可以重复使用此代码,因为我可以将其应用于各种元数据属性。 但是我不明白如何将 额外的 参数传递给usort回调。我试图制作一个JS风格的匿名函数,但是服务器上的PHP版本太旧,并引发了语法错误。 非常感谢您提供的任何帮助-或将

  • 我最近将我的应用程序迁移到Material Design,我在警报对话框中偶然发现了这个问题: 我正在应用如下对话框样式: