【问题标题】:Indexing into array of functions: Expression resolves to an unused l-value索引到函数数组:表达式解析为未使用的左值
【发布时间】:2015-03-30 23:03:35
【问题描述】:

我正在尝试对函数数组进行索引,但出现错误:“表达式解析为未使用的左值”。我试图用谷歌搜索这意味着什么,但信息很少,而且我发现的似乎无关。有谁知道我在这里做错了什么?任何帮助将非常感激 !谢谢。

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

    var cell:UITableViewCell = myTableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    var chart =  cell.contentView.viewWithTag(42) as TKChart
    chart.delegate = self
    chart.removeAllData(); //needed because of cell recycling

    var userDef1 = 1
    var userDef2 = 1

    func lineChart() -> TKChart {...}
    func columnChart() -> TKChart {...}

    var chartsArray = [AnyObject]()


    if userDef1 == 1{
        chartsArray.append(lineChart())
    }


    if userDef2 == 1{
        chartsArray.append(columnChart())
    }


     if indexPath.row == 0{
        chartsArray[0]  **error: Expression resolves to an unused l-value**
    }


    if indexPath.row == 1{
        chartsArray[1]   **error: Expression resolves to an unused l-value**
    }

    return cell
}

【问题讨论】:

  • chartsArray[i] 正在返回一个未被使用的值。 Swift 认为这是一个错误,因为没有使用 if 条件中唯一表达式的左侧值。

标签: ios swift


【解决方案1】:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:UITableViewCell = myTableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    var chart =  cell.contentView.viewWithTag(42) as TKChart
    chart.delegate = self
    chart.removeAllData(); //needed because of cell recycling

    var userDef1 = 1
    var userDef2 = 1

    func lineChart() -> TKChart {...}
    func columnChart() -> TKChart {...}

    var chartsArray = [AnyObject]()


    if userDef1 == 1{
        chartsArray.append(lineChart)
   }


    if userDef2 == 1{
        chartsArray.append(columnChart)
    }


     if indexPath.row == 0{
        chartsArray[0]()  
    }


    if indexPath.row == 1{
        chartsArray[1]()   
    }

     return cell
}

【讨论】:

  • 非常感谢您的回复。由于两者都给出了相同的正确解决方案,因此我必须选择第一响应者作为“正确”答案。谢谢
【解决方案2】:

chartsArray[0] 类似于只写lineChart()结果;您正在识别一个值,但实际上并没有对它做任何事情。

【讨论】:

  • 好的,但是如果我只写 lineChart() 它会评估,图表绘制没有错误。如何使用数组获得相同的结果?
  • try chartsArray[0]() 你只需将函数类型保存在数组中并返回并调用它,它才能正常工作
猜你喜欢
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多