条件绑定中的绑定值必须是可选类型

时间:2015-03-08 09:54:03

标签: ios uitableview swift

如果让ip = indexPath?,我收到以下错误:条件绑定中的绑定值必须是可选类型

如何解决 indexPath 以解决此问题?

<>

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let CellId:String = "Cell"
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellId) as UITableViewCell

    if let ip = indexPath? {
        cell.textLabel?.text = myData[ip.row] as String
    }


    return cell
}

2 个答案:

答案 0 :(得分:2)

indexPath不是可选类型(即NSIndexPath?)所以不需要用if let ip = indexPath?打开它(因此错误消息)

您可以按原样使用它:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let CellId:String = "Cell"
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellId) as UITableViewCell

    cell.textLabel?.text = myData[indexPath.row] as String

    return cell
}

答案 1 :(得分:0)

indexPath不是可选值。因此,在任何情况下,它的值都不会是nil

所以你不能写(不能打开非可选值):

if let ip = indexPath?

所以改变代码如:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let CellId:String = "Cell"
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellId) as UITableViewCell
    cell.textLabel?.text = myData[indexPath.row] as String
    return cell
}