嘿伙计们刚接触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版本有关,所以希望简单
欢呼声
特拉维斯
答案 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为您提供的错误消息中的建议来解决此问题。