【问题标题】:What does 'Extra arguments at positions in call' mean?“通话中位置的额外参数”是什么意思?
【发布时间】:2021-07-17 14:26:37
【问题描述】:

我有一个字符串 - “productRaw”,我将其拆分以显示在单独的 sectionData 单元格中,同时在同一“项目 1”cellData 表视图下。这是我用来拆分字符串并将每个单独的部分添加到单独的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])]
 }

当我在我的sectionData 中只使用[productName] 时,我声明我希望在第一部分显示的单个单元格 - “项目 1”,然后编译没有任何问题。但是,当我还将, [listingPrice], [briefDescription], [productURL], [activeUntil] 添加到我的sectionData 时,我收到[cellData(opened: 语法的以下错误。

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

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

【问题讨论】:

    标签: ios swift uitableview uikit


    【解决方案1】:

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

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

    我还将 [listingPrice]、[briefDescription]、[productURL]、[activeUntil] 添加到我的 sectionData

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

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

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

    【讨论】:

    • 完美 - 谢谢。我还在学习 Swift,所以这些信息对我很有帮助!
    【解决方案2】:

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

    this answer 他们还提到,如果您没有为每个参数传递正确的类型,则可能会引发此错误。

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

    【讨论】:

    • 我已经通过使用@jrturton 的支持解决了我的问题,我将每个项目添加为单独的数组项目,这导致编译器将这些解释为额外的函数参数。
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2018-10-25
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多