2014-11-02 2 views
2

У меня есть два файла, над которыми я работаю для своей игры SpriteKit: SPSwipes.swift и GameScene.swift.Swift: Получение типов из экземпляра класса

В моем SPSwipes.swift файла, внутри класса SPSwipes, переменная запускаются с помощью IBAction.

class SPSwipes: UIViewController { 

@IBAction func fiveSwipes(sender: AnyObject) { 
    var no_of_swipes = 5 
    } 
} 

В моем GameScene.swift файла, если заявление проверяет, что значения было присвоенные моей переменной и создает массив в этом,:

if no_of_swipes == 5 { 
     var array = Array<UInt32>(count: 5, repeatedValue: 0) 
     for i in 0 ..< 5 { 
      array[i] = arc4random_uniform(100)} 
     } 

Я получаю эту ошибку сообщение:

enter image description here

Чтобы «исправить» проблемы, я понял, что мне нужно, чтобы создать экземпляр моего SPSwipes класса, поэтому я добавил это к моему GameScene.swift файла:

var swipes = SPSwipes() 

А потом я изменил если заявление сказать:

if swipes.no_of_swipes == 5{ 
... 
} 

Затем я получил эту ошибку :

enter image description here

Насколько я знаю, я правильно создал экземпляр класса, но, очевидно, проблема.

ответ

1

Ваша ошибка здесь:

@IBAction func fiveSwipes(sender: AnyObject) { 
    var no_of_swipes = 5 
} 

Вы создали переменную внутри функции, поэтому переменная не существует вне этой функции.

Что вы хотите, чтобы иметь переменную вживую, пока объект жизни класса, поэтому вам нужно создать переменную один уровень выше:

class SPSwipes: UIViewController { 

var numberOfSwipes = 0 

@IBAction func fiveSwipes(sender: AnyObject) { 
    numberOfSwipes = 5 
    } 
} 
+0

Спасибо. Одна вещь, безопасно ли делать «var numberOfSwipes = 5» внутри функции, или я должен оставить «var»? – will

+2

Если вы поместите функцию var в функцию, вы создадите локальную переменную, которая будет использоваться в предпочтении переменной-члену. –

Смежные вопросы