Swift功能调用中是否需要参数的所需顺序



xcode 8.3.3在我的函数声明中抱怨参数顺序,如附件所示。JSON信息显示在代码下方的面板中,并具有以下顺序数据:自动播放,描述,图像,标题,类型,视频,视频。

错误消息说呼叫中的不正确参数标签(具有'标题:描述:图像:视频:类型:自动播放。',预期'标题:描述:描述:图像:视频:视频:videoformat:autoplay。'(

换句话说,Swift期望" VideoFormat"而不是"类型"。我不在乎录像带,也没有将其包括在JSON Serialization中。我确实在乎类型,并为其分配了一个变量,因此我需要传递一个值。

[当前参数的顺序已被Xcode Swift严格解析 - 我最初以声明的顺序将它们进行了,但Xcode/swift坚持要求此顺序。]

所需顺序是通过参数类型的巧合:字符串,字符串,URL,URL,??,int,为什么要询问从未被声明但不是被声明的类型的录像带?屏幕截图显示函数声明和实际JSON数据进行解析

参数顺序是

(a(您在init方法中指定的顺序

struct Video {
    let a: String
    let b: String
    init(a: String, b: String) {
        self.a = a
        self.b = b
    }
}

(b(它们在结构中声明的顺序,您尚未定义一个初始方法。

struct Video {
    let a: String
    let b: String
}

在这里,参数与(a(完全一样,但是Swift为您创建了默认的init方法。

您无法更改订单,而不是始终使用默认值。

init(title: String, description: String, image: String, video: String, videoformat: String? = nil, autoplay: String? = nil) {
    self.title= title
    self.description= description
    self.image= image
    self.video= video
    self.videoformat= videoformat
    self.autoplay= autoplay
}

现在您可以这样发起,现在您无需通过VideoFormat&其他默认参数

Video(title: title, description: description, image: image, video: video, autoplay: autoplay)

如果您的代码正确使用了参数,但是错误看起来是虚假的,则应退出Xcode(正常方式(,然后重新发布。

今天,这发生在我身上,我一次在几个地方重新编写了代码。我将其解释为索引器变得困惑。

注意:在解决问题之前,我可能不得不退出 两次。我在Xcode 9.2中,如果有帮助。

最新更新