【问题标题】:getting an error xcode 6.3.2 UITableViewCell收到错误 xcode 6.3.2 UITableViewCell
【发布时间】:2015-08-15 22:43:04
【问题描述】:

大家好,我是 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

出现错误

anyobject 不能转换为UITableViewCell 你是不是要使用“as!”强制沮丧?

任何帮助将不胜感激

我 100% 与我的 xcode 版本有关,所以希望是一些简单的事情

干杯

特拉维斯

【问题讨论】:

  • 从 Swift 1.2 开始,您需要使用 as! 显式转换(如错误所示)。
  • xcode 告诉你如何解决这个问题。您花了很多时间发布此内容,而不是自己弄清楚。不要误会我的意思,但你应该多花一点时间在语言和 xcode 上。

标签: ios xcode uitableview swift


【解决方案1】:

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

正如 bjornorri 所写,as 的语法在 Swift 1.2 中发生了变化。

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

所以...您必须将其转换为 UITableViewCell,正如您已经知道的那样,您使用 as 关键字执行此操作。

当您从更抽象的事物转换为更具体的事物时,就像您在此处尝试从 AnyObject 转换到 UITableViewCell 时所做的那样,这被称为向下转换。

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

因此,从 Swift 1.2 开始,as 的行为发生了变化,因此您必须添加一个 !迫使沮丧。这意味着您告诉编译器继续并只是向下转换对象,您知道自己在做什么。如果它有效,那么一切都很好,但如果它不起作用,您的应用程序将崩溃。

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

【讨论】:

  • 真棒喝彩。是的,我已经标记了那个网站书。当我沮丧时它起作用了,但另一部分停止工作,我的伙伴说不要沮丧,但他没有丰富的快速经验,所以我想我会问。干杯家伙的
【解决方案2】:

这是因为 Swift 语法在编写演示后发生了变化。您可以通过遵循 Xcode 为您提供的错误消息中的建议来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多