2016-06-24 11 views
2

Я знаю, что это будет супер элементарно, но у меня есть этот кусок кода:Простой быстры массив Append не работает

var labels: [String]? 

func initVC(image: Images){ 
    self.image = image 

    let tempLabels = image.label?.allObjects as! [Labels] 
    for i in 0..<tempLabels.count{ 
     labels?.append(tempLabels[i].label!) 
    } 

} 

этикетки находится в общественном объеме, поэтому функция должна иметь доступ к нему, но когда цикл проходит, метки все еще ноль без элементов.

Когда я во время отладки, tempLabels, как я ожидаю, это будет с двумя строковыми элементами.

Я уверен, что это очень простая проблема, но я думаю, что сейчас я просто из нее.

ответ

12

Этикетки никогда не были инициализированы. Изменение

var labels:[String]? 

к

var labels:[String] = [] 
+0

это всегда самые маленькие вещи, которые так много времени. еще раз спасибо! –

-3

Да, это было супер просто.

Изменено

var labels: [String]? 

Для

var labels = [String]() 
+1

Если вы довольны ответом, нажмите на зеленый галочку рядом с ним: это показывает, что выбранный вами ответ решил вашу проблему. Если вы хотите добавить более подробную информацию, пожалуйста, сделайте это в вопросе, а не в отдельном ответе. – GJZ

1

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

Для того, чтобы быть полезной, вы должны инициализировать его

var labels:[String] = [] 
+1

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

+0

Хорошая точка, я это изменит. – GJZ

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