'Extra arguments at positions in call'是什么意思?



我有一个字符串-";productRaw";我将其分解以在单独的sectionData细胞中显示;项目1";cellData表视图。这是我用来拆分String并将每个单独的部分添加到一个单独的sectionData单元的代码。

let group_array = document["product"] as? [String] ?? [""]

let productName1 = group_array.first ?? "No data to display :("

let productRaw = "(productName1)"
let componentsRaw = productRaw.components(separatedBy: ", ")

var product = [String: String]()
for component in componentsRaw {

let keyVal = component.components(separatedBy: ": ")
product[keyVal[0]] = keyVal[1]

}

if let productName = product["Product Name"], let listingPrice = product["Listing Price"], let briefDescription = product["A brief description"], let productURL = product["Product URL"], let activeUntil = product["Listing active until"] { 

self.tableViewData = [cellData(opened: false, title: "Item 1", sectionData: [productName],  [listingPrice], [briefDescription], [productURL], [activeUntil])]
}

在我声明我想要显示的第一部分的各个单元格的情况下——";项目1";,当我在sectionData中只使用[productName]时,它编译起来没有任何问题。然而,当我也将, [listingPrice], [briefDescription], [productURL], [activeUntil]添加到我的sectionData时,我收到以下[cellData(opened:语法错误。

调用中位置#4、#5、#6、#7处的额外参数

所以我的问题是,为什么我会收到上述错误,我该怎么办才能解决它?

当我只在我的sectionData中使用[productName]时,这会编译

[productName]是一个包含一个项的数组。

我还将[listingPrice]、[briefDescription]、[productURL]、[activeUntil]添加到我的部分数据

您添加了用逗号分隔的额外数组,编译器将其解释为额外的函数参数。

self.tableViewData = [cellData(opened: false, title: "Item 1", sectionData: [productName, listingPrice, briefDescription, productURL, activeUntil])]

将所有项目放在一组方括号内。这就是如何声明具有多个项的数组。

如果没有看到cellData的声明,很难知道出了什么问题,但据我所知,最明显的原因是cellData的构造函数只接受3个参数,而不是7个参数。

在这个答案中,他们还提到,如果你不为每个参数传递正确的类型,可能会引发这个错误。

如果给出cellData的定义,我们可以提供更多帮助

最新更新