【问题标题】:Swift - 'AnyObject!' is not convertible to 'ViewController'; did you mean to use 'as!' to force downcast?斯威夫特 - “任何对象!”不能转换为“ViewController”;你的意思是用'as!'强迫沮丧?
【发布时间】:2015-04-23 18:56:18
【问题描述】:

我刚刚将我的 xcode 从 6.2 更新到 6.3.1。问题是我的项目中有很多这样的错误消息。

/Users/MNurdin/Documents/iOS/xxxxx/Controllers/Profile/DirectoryTableViewController.swift:31:98: “任何对象!”不能转换为“ViewController”;你的意思是 用于!'强制沮丧?

我的一个受此错误消息影响的代码。

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
            let viewController = storyBoard.instantiateViewControllerWithIdentifier("LoginView") as! ViewController
            self.presentViewController(viewController, animated:true, completion:nil)

【问题讨论】:

  • 使用新的 Swift 1.2 你应该使用 if let 来转换 viewController
  • 编译器会告诉你如何解决这个问题。 Xcode 中甚至还有一个“转换为最新的 Swift 语法”选项。所有这些都记录在 Xcode 6.3 发行说明中。

标签: ios swift xcode6


【解决方案1】:

更新到 Xcode 6.3 后,您现在使用的是 Swift 1.2

在 Swift 1.2 之前,as 也用于强制转换。

Swift 1.2 现在使用 as! 表示强制转换,以明确表示如果您尝试向下转换为实际上不代表值类型的类型,转换可能会失败。

所以你必须使用as! 而不是as

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多