微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

uitableview – Swift – 什么是向下转型?为什么我需要在tableview中向下转换单元格?

下面的代码是在UItableview中显示单元格的名称.

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

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell")
            as UITableViewCell

        cell.textLabel!.text = "Spring \(indexPath.row + 1)"

        return cell
}

一个编译错误,Xcode建议我将’as’更改为’as!’ –

let cell = tableView.dequeueReusableCellWithIdentifier("Cell")
        as! UITableViewCell

可能有人解释了什么是垂头丧气,为什么我们需要在这种情况下垂头丧气?

解决方法

OK ..lets让它变得非常简单.

在线上:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell")

您正在访问tableView的方法dequeueReusableCellWithIdentifier,如果您查看文档,您可以看到返回类型是AnyObject?.

现在假设您要访问textLabel属性

cell.textLabel!.text = "Spring \(indexPath.row + 1)"

你不能这样做.因为AnyObject上没有任何textlabel类型.

因此,您正在向下转发强制编译器更具体的类UITableViewCell,如下所示,因为稍后您尝试访问文本标签属性

let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐