无法将'UIView'(0x112484eb0)types的值转换为'SKView'(0x111646718)

无法将'UIView'(0x112484eb0)types的值转换为'SKView'(0x111646718)。 我一直在得到这个错误。 任何人都可以帮助我,因为该行的代码是在那里默认情况下。 我使用xcode 7 beta将SK游戏转换为最新的swift语法。 编译器错过了很多东西,这就是为什么我回到xcode 6.我没有红色的错误; 但是,游戏崩溃,说线程1:信号SIGARBT。 swift 2和swift 1的最新版本之间的任何提示,可能会导致在转换到最新的swift语法的问题。 也许是被转换的东西,我应该在xcode 6.3.2中改变。 一旦这个崩溃问题得到解决,我将删除testing版。 代码中可能存在错误,因为当我将代码复制到一个全新的xcode项目中时,我得到了同样的错误。 提前致谢!

let skView = self.view as! SKView 

转到Storyboard,select包含SpriteKit游戏的UIViewController,然后从左侧菜单中select视图:

在这里输入图像说明

现在进入Identity Inspector并确保Class是SKView而不是UIView

在这里输入图像说明

你现在应该能够从你的UIViewController编译这部分代码:

 // Configure the view. SKView * skView = (SKView *)self.view; 

或者在Swift中:

 let skView = self.view as! SKView 

对于那些不想使用Storyboard ,可以在ViewControllerloadView函数中简单地将视图创build为SKView

 class ViewController: UIViewController { override func loadView() { self.view = SKView() } override func viewDidLoad() { let skView = view as! SKView ... } } 

我终于修好了! 我不必将函数放在GameViewController中,而是从游戏场景中调用它们,我不得不将这些函数放在gameScene中,并用self.view!replaceview。