Swift Newbie Argument标签'(_ :, IndexPath :)'与任何可用的重载都不匹配

时间:2019-09-04 13:43:15

标签: swift xcode

当我调用tableView函数时,标题出现错误。我的问题是,即使函数是请求的类型,为什么函数也不采用这两个参数?我还是新手,如果答案很明显,请原谅我。

class TableViewController: UITableViewController { 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell { 
        let cell = tableView.dequeueReusableCell(withIdentifier: "itemCell") as! UITableViewCell 
        let name = Array(shopItems.keys) [indexPath.row]
        let cost = Array(shopItems.values) [indexPath.row] 
        cell.textLabel?.text = name + String(cost)
        return cell 
    }
}

当我这样调用函数时:

  

“ TableViewController.tableView(shopTableView,IndexPath:NSIndexPath)”出现错误:“参数标签'(_ :, IndexPath :)'与任何可用的重载都不匹配”

2 个答案:

答案 0 :(得分:0)

尝试使用

 let name = shopItems.keys[indexPath.row]

代替

    let name = Array(shopItems.keys) [indexPath.row]

如果不是嵌套方法,最好不要使用自动换行。 尝试更改

let cell = tableView.dequeueReusableCell(withIdentifier: "itemCell") as! UITableViewCell

 guard let cell = tableView.dequeueReusableCell(withIdentifier: "itemCell") as? UITableViewCell else { 
    return UITableViewCell()
}

编辑:正如@Sh_Khan说的那样替换

func tableView(_ tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

答案 1 :(得分:0)

有一种简便快捷的方法来找出正确的超载

  1. 选择整个方法,然后按⌘/ 注释掉代码。
  2. 在类的顶级上,输入cellForRow。代码完成列表中的第一项是正确的方法。
  3. 返回插入正确的方法。
  4. 通过再次选择
  5. 错误方法并按⌘/ 来注释
  6. 错误。
  7. 将错误方法的主体复制并粘贴到正确的方法中。
  8. 删除其余错误的方法。