web-dev-qa-db-ja.com

タイプ 'UIView'(0x112484eb0)の値を 'SKView'(0x111646718)にキャストできませんでした

タイプ 'UIView'(0x112484eb0)の値を 'SKView'(0x111646718)にキャストできませんでした。このエラーが引き続き発生します。コードの行がデフォルトでそこにあるので、誰でも私を助けることができます。 SKゲームをxcode 7ベータ版を使用して最新のSwift構文に変換しました。コンパイラーには多くのことが欠けていたため、xcode 6に戻りました。しかし、ゲームがクラッシュし、スレッド1が表示されます。SIGARBTを通知します。Swift 2と最新バージョンSwift 1の間の変更に関するヒント最新のSwift構文への変換における問題。おそらく変換されたもので、xcode 6.3.2で変更する必要があります。このクラッシュの問題が解決したらベータを削除します。コードのエラー。コードをブランドの新しいXcodeプロジェクトにコピーしたときに同じエラーが発生したためです。

let skView = self.view as! SKView
25
Aryaman Goel

ストーリーボードに移動し、SpriteKitゲームを含むUIViewControllerを選択して、左側のメニューからビューを選択します。

enter image description here

Identity Inspectorに移動し、ClassがSKViewではなくUIViewであることを確認します。

enter image description here

これで、コードのこの部分をUIViewControllerからコンパイルできるはずです。

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

またはスウィフトで:

let skView = self.view as! SKView
58
aramusss

Storyboardを使用したくない場合は、SKViewViewController関数でloadViewとしてビューを簡単に作成できます。

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

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

簡単な修正。使用しているビューコントローラーのビューをUIViewからSKViewに変更するだけです。

0
Arin W.