Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法将“UIView”(0x112484eb0)类型的值强制转换为“SKView”(0x111646718)_Ios_Swift_Sprite Kit_Xcode7_Xcode6.3.2 - Fatal编程技术网

Ios 无法将“UIView”(0x112484eb0)类型的值强制转换为“SKView”(0x111646718)

Ios 无法将“UIView”(0x112484eb0)类型的值强制转换为“SKView”(0x111646718),ios,swift,sprite-kit,xcode7,xcode6.3.2,Ios,Swift,Sprite Kit,Xcode7,Xcode6.3.2,无法将“UIView”0x112484eb0类型的值强制转换为“SKView”0x111646718。我不断地犯这个错误。有人能帮我吗,因为默认情况下代码行就在那里。我使用xcode 7测试版将SK游戏转换为最新的swift语法。编译器遗漏了很多东西,这就是我回到xcode 6的原因。我没有红色的错误;但是,游戏崩溃了,线程1:信号SIGARBT。关于swift 2和最新版本swift 1之间可能导致转换为最新swift语法出现问题的更改的任何提示。也许有些东西已经转换了,我应该在xcode 6

无法将“UIView”0x112484eb0类型的值强制转换为“SKView”0x111646718。我不断地犯这个错误。有人能帮我吗,因为默认情况下代码行就在那里。我使用xcode 7测试版将SK游戏转换为最新的swift语法。编译器遗漏了很多东西,这就是我回到xcode 6的原因。我没有红色的错误;但是,游戏崩溃了,线程1:信号SIGARBT。关于swift 2和最新版本swift 1之间可能导致转换为最新swift语法出现问题的更改的任何提示。也许有些东西已经转换了,我应该在xcode 6.3.2中进行更改。一旦这个崩溃问题得到解决,我将删除测试版。代码中可能有错误,因为我在将代码复制到一个全新的xcode项目时遇到了相同的错误。 提前谢谢

let skView = self.view as! SKView

转到情节提要,选择包含SpriteKit游戏的UIViewController,然后从左菜单中选择视图:

现在转到Identity Inspector并确保类是SKView而不是UIView:

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

或使用Swift:

let skView = self.view as! SKView

我终于修好了!我没有将函数放在GameViewController中并从游戏场景中调用它们,而是将函数放在GameSevent中,并用self.view!替换视图

对于不想使用情节提要的用户,可以在ViewController的loadView函数中将视图简单地创建为SKView

class ViewController: UIViewController {
  override func loadView() {
    self.view = SKView()
  }

  override func viewDidLoad() {
    let skView = view as! SKView
    ...
  }
}

简单的修复。您只需将您使用的每个视图控制器所在的视图从UIView更改为SKView。

问题不在这一行。它是情节提要中场景的配置。此对象的场景为视图出口指定UIView,而不是SKViewIt not代码。这是故事板场景正如我上面所说的,类的视图出口是UIView的实例,而不是SKView-检查场景,最外面的视图是什么?它的类别是什么?在故事板上,检查GameViewController*UIViewController,然后单击空视图。如果您转到Identity Inspector右菜单的第三个图标,您应该会看到SKView类,但您可能有UIView,这是导致错误的原因。将该类更改为SKView。-添加了一个带有图片的答案。我认为您应该接受其中一个s或aramusss的答案,如果你愿意,用更清晰的术语提问,并发布你的答案,以帮助其他人解决同一问题,也就是说,如果该问题仍然可以作为swift语言复制,并且可能在发布后框架已经演变。例如:当使用可复制的步骤时,使用title无法将“UIView”类型的值强制转换为“SKView”。这可能是什么?我创建了一个新的xcode项目并复制了所有代码。仍然是相同的错误。如果您创建了一个新的Xcode项目,选择Game,使用Swift并在不修改任何代码的情况下运行该项目,您会收到相同的错误吗?如果是这样的话,我建议您从头开始重新安装Xcode,而不使用Beta,Apple Store的稳定版本。否则,它是稳定的。我使用的是xcode 6.3.2 stabled。谢谢你的回答。这对我很有帮助。但我还必须将UIView对象本身添加到ViewController::这似乎不是一个合理的解决方案,而是一个黑客/解决方法。我不明白为什么这被否决了。这确实奏效了+1汉克斯·穆辛。我很高兴这个解决方案对你和我都有帮助!
class ViewController: UIViewController {
  override func loadView() {
    self.view = SKView()
  }

  override func viewDidLoad() {
    let skView = view as! SKView
    ...
  }
}