无法将类型 'UIView' (0x112484eb0) 的值转换为 'SKView' (0x111646718)
Could not cast value of type 'UIView' (0x112484eb0) to 'SKView' (0x111646718)
无法将类型 'UIView' (0x112484eb0) 的值转换为 'SKView' (0x111646718)。我不断收到此错误。任何人都可以帮助我,因为默认情况下代码行就在那里。我使用 xcode 7 beta 将 SK 游戏转换为最新的 swift 语法。编译器遗漏了很多东西,这就是为什么我回到 xcode 6。我没有红色错误;但是,游戏崩溃并显示线程 1:SIGARBT 信号。关于 swift 2 和最新版本 swift 1 之间的变化的任何提示,这些变化可能会导致在转换为最新的 swift 语法时出现问题。也许我应该在 xcode 6.3.2 中更改一些已转换的内容。一旦崩溃问题得到解决,我将删除测试版。代码中可能有错误,因为当我将代码复制到一个全新的 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
我终于修好了!我没有将函数放在 GameViewController 中并从游戏场景中调用它们,而是不得不将函数放在 gameScene 中并用 self.view!.
替换视图
对于不想使用 Storyboard
的用户,您可以在 ViewController
的 loadView
函数中简单地将视图创建为 SKView
。
class ViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
let skView = view as! SKView
...
}
}
简单修复。您只需将您使用的每个视图控制器的视图从 UIView 更改为 SKView。
无法将类型 'UIView' (0x112484eb0) 的值转换为 'SKView' (0x111646718)。我不断收到此错误。任何人都可以帮助我,因为默认情况下代码行就在那里。我使用 xcode 7 beta 将 SK 游戏转换为最新的 swift 语法。编译器遗漏了很多东西,这就是为什么我回到 xcode 6。我没有红色错误;但是,游戏崩溃并显示线程 1:SIGARBT 信号。关于 swift 2 和最新版本 swift 1 之间的变化的任何提示,这些变化可能会导致在转换为最新的 swift 语法时出现问题。也许我应该在 xcode 6.3.2 中更改一些已转换的内容。一旦崩溃问题得到解决,我将删除测试版。代码中可能有错误,因为当我将代码复制到一个全新的 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
我终于修好了!我没有将函数放在 GameViewController 中并从游戏场景中调用它们,而是不得不将函数放在 gameScene 中并用 self.view!.
替换视图对于不想使用 Storyboard
的用户,您可以在 ViewController
的 loadView
函数中简单地将视图创建为 SKView
。
class ViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
let skView = view as! SKView
...
}
}
简单修复。您只需将您使用的每个视图控制器的视图从 UIView 更改为 SKView。