Помогите с передачей переменной и segue
Есть класс HomeModel, в нём есть массив locations. В класс ViewController нужно передать этот массив.
Потом я хочу передать через segue передать строку из locations в нажатой ячейке передать в класс ShowInfoViewController и там вывести в label
Так у вас локейшонс определен внутри функции, поэтому вы не видите его из другого класса. Определите локейшонс вне функции. А локейшонс, который определяется внутри функции “парсДжейсон” - удалите.
public var locations: NSMutableArray? - попробуйте так. И нажмите на контрл бэ, ошибки могут не сразу уйти.
Замените
let locations = HomeModel.locations
на
let locations = homeModel.locations
.
Если я правильно понимаю, то locations в классе у вас инициализирован пустым массивом, при том, что это константа.
Конечно не поможет, ибо у вас как-то архитектурно не так построено приложение) Вам бы переделать всю эту логику. А чего вы вообще добиваетесь этим кодом? Ну и переменные с маленькой буквы пишут)
в HomeModel из базы данных загружаются данные. Это выводится в TableView, при нажатии на TableView происходит переход на ShowInfoViewController, где в label должно вывести содержимое переменной Room
То есть в локейшонс у вас сохраняется некий объект, да? Так сделайте так, чтобы у этого объекта был свой класс, а в нем строковая переменная. В нужный вам контроллер вы передадите объект, а не строку. И в нужном вам классе вы из этого объекта просто вытащите строку из переданного объекта и инициализируете таким образом лейбл. Всё)
У него уже есть свой класс для этого объекта, названный LocationModel. Так что пока это зашло не слишком далеко, замените в строке, где у вас ошибка
Room
на
room
.
is_busy у вас, насколько я помню, лэйбл (правильно?) так что нужно обращаться к его свойству text (с маленькой буквы )
Кстати, в tableView у вас всё нормально отображается?
PS Ещё у вас неправильно определяется тип locations в классе ViewController. Вы же не убрали locations = homeModel.locations
? Ещё у вас есть массив feedItems, которым вы заполняете таблицу, можете использовать его для передачи данных.
Из того, что я понял - я бы сделал так:
var locations: [Location] = [ ]
//инициализировали объект локейшонс как вам надо…
locations.add(location)
//и в препейр где is_busy класса ШоуИнфоВьюКонтроллер - это объекта класса Location
dvc.is_busy = self.locations[indexPath.row]
Судя по коду ничего менять не нужно. Там есть метод из делегата itemsDownloaded, который возвращает как раз locations и записывает в переменную feedItems. Вот этот feedItems и передавайте во 2й VC.
P.S. и для начала изучили бы основы, прежде чем работать с чужим кодом.