如何在运行时更改变量类型

时间:2016-05-12 02:27:42

标签: swift swift2

我有tableview想要根据数据源标识符显示不同的UITableViewCell's

这是我的代码:

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

    var cell : AnyObject

    var itemDic = items.objectAtIndex(indexPath.row) as! [String : String];

    switch itemDic["celltype"]! as String {
    case "dash":

        cell = tblGraphs.dequeueReusableCellWithIdentifier("DashboardCell") as! DashboardTableViewCell
        cell.setData(itemDic, indexPath: indexPath)
    case "chart":

    cell = tblGraphs.dequeueReusableCellWithIdentifier("ChartCell") as! ChartTableViewCell

    default:

        cell = tblGraphs.dequeueReusableCellWithIdentifier("DashboardCell") as! DashboardTableViewCell

    }


    return cell
}

当然是给我一个错误:

enter image description here

关于如何解决这个问题的任何线索?

2 个答案:

答案 0 :(得分:0)

替换

var cell : AnyObject

var cell : UITableViewCell!

否则它不知道您正在尝试返回UITableViewCell

答案 1 :(得分:0)

实际上你已经采用了anyobject类型的单元格变量,但该方法返回了UITableViewcell的对象。 如果你有不同类型的细胞,你必须采取类型的变量" UITableViewcell"它会像这个方法中的任何对象一样工作。