web-dev-qa-db-fra.com

Impossible de convertir la valeur de type 'UIView' (0x112484eb0) en 'SKView' (0x111646718)

Impossible de convertir la valeur du type 'UIView' (0x112484eb0) en 'SKView' (0x111646718). Je continue à obtenir cette erreur. Est-ce que n'importe qui peut m'aider parce que la ligne de code est là par défaut. J'ai converti le jeu SK dans la dernière syntaxe Swift en utilisant la version bêta de xcode 7. Le compilateur manquait beaucoup de choses, c'est pourquoi je suis revenu à xcode 6. Je n'ai aucune erreur rouge; mais, le jeu se bloque et dit le fil 1: signal SIGARBT. Toute astuce sur les modifications entre Swift 2 et la dernière version de Swift 1 qui aurait pu poser des problèmes pour la conversion à la dernière syntaxe Swift. Peut-être quelque chose qui a été converti, que je devrais changer dans xcode 6.3.2. Je vais supprimer la version bêta une fois ce problème résolu. Il y a probablement une erreur dans le code, car j'ai eu la même erreur quand j'ai copié le code sur un tout nouveau projet xcode . Merci d'avance!

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

Allez sur votre Storyboard, sélectionnez votre UIViewController contenant le jeu SpriteKit, puis sélectionnez la vue dans le menu de gauche:

enter image description here

Maintenant, allez dans l’inspecteur d’identité et assurez-vous que la classe est SKView et non UIView:

enter image description here

Vous devriez maintenant pouvoir compiler cette partie du code à partir de votre UIViewController:

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

Ou à Swift:

let skView = self.view as! SKView
47
aramusss

Pour ceux qui ne souhaitent pas utiliser Storyboard, vous pouvez simplement créer la vue en tant que SKView dans la fonction ViewController's loadView.

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

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

Solution simple. Il vous suffit de changer la vue dans laquelle vous visualisez le contrôleur que vous utilisez d'UIView vers SKView.

0
Arin W.