得到错误xcode 6.3.2 UITableViewCell

时间:2015-06-02 08:29:10

标签: ios xcode uitableview swift

嘿伙计们刚接触xcode和编程

我正在尝试制作滑出菜单的教程

https://www.youtube.com/watch?v=8EFfPT3UeWs

我无法让它工作,我下载了这里找到的完成的项目文件: https://www.dropbox.com/s/7eku9pp06u75q6u/SlideoutMenuSwift-Full.zip?dl=0

我无法让它工作

var cell = tableView.dequeueReusableCellWithIdentifier(TableArray[indexPath.row], forIndexPath: indexPath) as UITableViewCell

出现错误

任何对象都无法转换为UITableViewCell你的意思是使用“as!”迫使低垂?

任何帮助将不胜感激

我100%它与我的xcode版本有关,所以希望简单

欢呼声

特拉维斯

2 个答案:

答案 0 :(得分:1)

欢迎来到编程的神奇世界: - )

正如bjornorri所写,as的语法在Swift 1.2中已经改变。

如果您查看方法dequeueReusableCellWithIdentifier的文档(可以找到here),您会看到它返回AnyObject,这意味着什么。

所以......你必须将UITableViewCell投射到as关键字,而你已经想到了AnyObject关键字。

当您从更抽象的内容转换为更具体的内容时,就像您在尝试从UITableViewCell转到UITableViewCell时所做的那样,这被称为向下转发。

垂头丧气的问题是,你无法确定它是否真的有效。当然,你说你希望这个对象是UITableViewCell(在这种情况下,它会起作用)但是没有保证,原始值可能不是as

因此,从Swift 1.2开始,{{1}}的行为发生了变化,所以你必须添加一个!强迫垂头丧气。这意味着您告诉编译器继续前进并向下转换对象,您知道自己在做什么。如果它工作,那么一切都很好,但如果它没有,你的应用程序将崩溃。

你可以在Ray Wenderlich阅读更多相关信息(如果您还没有,我建议您加入书签: - )

答案 1 :(得分:0)

这是因为自编写演示以来Swift语法已经改变。您可以通过遵循Xcode为您提供的错误消息中的建议来解决此问题。