2015-06-20 2 views
-1

Я искал похожие вопросы, но ни один из них не ответил на мою проблему. Я делаю одно приложение для просмотра. в классе ViewController: раздел UIViewController У меня есть следующий код:Тип ViewController не имеет имени с именем

var lastToAct = 0 

var gameStarted = false 

var tempPlayer = BasePlayer() 

var positionNumber : Int = 0 

var stringPosNum : String = String(positionNumber) 

var stringFromInteger : String = "\(String(positionNumber))" 

Первые пять переменных я не получаю ошибку, но 6-й и 7-й из них я получаю ViewController Type «не имеет элемент с именем» positionNumber для последнего 2 переменных. Я не знаю, почему это так.

+0

Хм, похоже, правильно, можете ли вы опубликовать снимок экрана об ошибке или остальной части класса? – ranunez

ответ

0
var stringPosNum : String = String(positionNumber) 

Проблема заключается в том, что это хранимая переменная экземпляра значение которого по умолчанию зависит от значения другой переменной экземпляра. Вы не можете этого сделать, потому что во время создания экземпляра, когда применяется значение по умолчанию, существуют другие переменные экземпляра, потому что экземпляра еще нет - экземпляр именно то, что мы находимся в середине создания.

Одно решение: поставить lazy перед декларацией. Другое решение: если эта переменная всегда должна иметь это отношение к другой переменной экземпляра, сделайте ее вычисленной переменной вместо хранимой переменной.

+0

И для получения дополнительной информации см. Мою книгу: http://www.apeth.com/swiftBook/ch04.html#_properties – matt

+0

Спасибо. Я стараюсь учиться столько, сколько могу, но все же не могу разобраться с некоторыми из этих вещей. Ваше объяснение было полезным, и я буду изучать это больше. –

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