it-swarm.com.ru

Не удалось преобразовать значение типа "UIView" (0x112484eb0) в "SKView" (0x111646718)

Не удалось преобразовать значение типа «UIView» (0x112484eb0) в «SKView» (0x111646718). Я продолжаю получать эту ошибку. Может кто-нибудь помочь мне, потому что строка кода там по умолчанию. Я преобразовал игру SK в новейший синтаксис Swift, используя бета-версию xcode 7. Компилятору не хватало многих вещей, поэтому я вернулся к xcode 6. У меня нет красных ошибок; но, игра вылетает и говорит поток 1: сигнал SIGARBT. Любые советы об изменениях между Swift 2 и последней версией Swift 1, которые могли вызвать проблемы при переходе на последний синтаксис Swift. Возможно что-то, что было преобразовано, что я должен изменить в xcode 6.3.2. Я удалю бета-версию, как только эта проблема будет решена. Вероятно, в коде есть ошибка, потому что я получил ту же ошибку, когда скопировал код в совершенно новый проект xcode .... Заранее спасибо!

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

Перейдите на раскадровку, выберите свой UIViewController, содержащий игру SpriteKit, и выберите вид из левого меню:

enter image description here

Теперь перейдите в Identity Inspector и убедитесь, что класс SKView, а не UIView:

enter image description here

Теперь вы сможете скомпилировать эту часть кода из вашей UIViewController:

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

Или в Свифте:

let skView = self.view as! SKView
47
aramusss

Для тех, кто не хочет использовать Storyboard, вы можете просто создать представление как SKView в функции ViewController's loadView.

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

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

Простое исправление. Вам просто нужно изменить вид, в котором вы когда-либо просматриваете контроллер, с UIView на SKView.

0
Arin W.