Передача данных между двумя контроллерами представления не работает

Я пытаюсь передать некоторые данные между двумя контроллерами представления, но это не работает.

Это данные, которые я пытаюсь передать (у них есть элементы с parse.com - один и тот же код находится в обоих контроллерах представления):

var userFile = [PFFile]()
var createdAt = [NSDate]()
var objID = [String]()

Это кнопка для открытия контроллера представления (внутри первого контроллера представления я пытаюсь отправить данные ИЗ):

@IBAction func openButtonAction(sender: AnyObject) {
        let modalVC = ModalViewController(nibName: "ModalViewController", bundle: nil)
        modalVC.userFile = self.userFile
        modalVC.createdAt = self.createdAt
        modalVC.objID = self.objID

        print("USERFILE: \(modalVC.userFile.count)")
        presentViewController(modalVC, animated: true, completion: nil)
    }

Контроллер представления — это ModalViewController.xib, подключенный к ViewStoryModalViewController.swift.

Это viewDidLoad в контроллере представления, в который я пытаюсь отправить данные:

override func viewDidLoad() {
        super.viewDidLoad()

        print("USERFILECOUNT: \(self.userFile.count)")
    }

Моя проблема в том, что это сообщения, которые я получаю в выводе xCode: введите здесь описание изображения

Что здесь может быть не так? Какие-либо предложения?


person Roduck Nickes    schedule 05.05.2016    source источник
comment
Можем ли мы увидеть полный код для обоих контроллеров представления. Например, трудно сказать, что содержит self.userFile в первом.   -  person InnisBrendan    schedule 05.05.2016
comment
@grez Он содержит объект. Я проверил с помощью print после запроса.   -  person Roduck Nickes    schedule 05.05.2016


Ответы (2)


Вывод xCode сообщает, что массив self.userFile содержит ноль элементов. Это не означает, что он передан неправильно. Это просто пусто.

print("USERFILECOUNT: \(self.userFile.count)")

Проверьте, пуст ли он, прежде чем передавать его в модальный vc.

person Alex Kosyakov    schedule 05.05.2016
comment
Он не пуст перед его прохождением. - person Roduck Nickes; 05.05.2016
comment
Если ваш ModalViewController.xib подключен к ViewStoryModalViewController.swift, вы должны инициализировать его следующим образом: let modalVC = ViewStoryModalViewController(nibName: ModalViewController, bundle: nil) - person Alex Kosyakov; 05.05.2016
comment
Я получаю эту ошибку: Use of unresolved identifier "ViewStoryModalViewController". Это мой контроллер: s32.postimg.org/rmrfuw91h/ — и внутри класса : class ModalViewController: UIViewController - person Roduck Nickes; 06.05.2016
comment
Какой класс объявлен внутри него? - person Alex Kosyakov; 06.05.2016
comment
Внутри ViewStoryModalViewController.swift написано: class ModalViewController: UIViewController { - person Roduck Nickes; 06.05.2016
comment
Тогда эта строка верна: let modalVC = ModalViewController(nibName: ModalViewController, bundle: nil) - person Alex Kosyakov; 06.05.2016
comment
Можете ли вы опубликовать печать переменной modalVC? И еще: правильно ли передаются другие переменные, такие как createdAt и objID? - person Alex Kosyakov; 06.05.2016
comment
Извините, мой плохой, внутри ViewStoryModalViewController.swift написано: class ViewStoryModalViewController: UIViewController { - person Roduck Nickes; 06.05.2016
comment
Ни одна из переменных не передается правильно. Но возможно ли сохранить переменные внутри другого контроллера представления, например: Variables.swift, и получить оттуда после перехода или? - person Roduck Nickes; 06.05.2016
comment
Тогда должно быть так, как я написал выше, пусть modalVC = ViewStoryModalViewController(nibName: ModalViewController, bundle: nil), попробуйте исправить использование неразрешенной проблемы с идентификатором, сделав класс ViewStoryModalViewController общедоступным. - person Alex Kosyakov; 06.05.2016
comment
Странно, я все еще получаю это в выводе: s32.postimg.org/3ku51dmbp/ - person Roduck Nickes; 06.05.2016
comment
Какой класс объявлен в ModalViewController.xib? Можете ли вы опубликовать фотографию? - person Alex Kosyakov; 06.05.2016
comment
Это зависит от того, что я выберу слева. Посмотрите здесь: 1: s32.postimg. org/70svgbio5/ 2: s32.postimg.org/dq40a2tdx/ - person Roduck Nickes; 06.05.2016
comment
В поле класса (первое изображение) замените ModalViewController на ViewStoryModalViewController. - person Alex Kosyakov; 06.05.2016
comment
Пробовал это и все еще не работает: s32.postimg.org/ez2ysqc1x/ и вывод: s32.postimg.org/wea5xps3p/ – Могу ли я попробовать сохранить данные в другом Файл ViewController.swift и взять его оттуда после viewDidLoad? Или это теперь будет работать? - person Roduck Nickes; 07.05.2016

Попробуйте этот код Сначала вам нужно представить, а затем попробуйте установить переменную.

IBAction func openButtonAction(sender: AnyObject) {
        let modalVC = ModalViewController(nibName: "ModalViewController", bundle: nil)
      print("USERFILE: \(modalVC.userFile.count)")
        presentViewController(modalVC, animated: true, completion: nil)
        modalVC.userFile = self.userFile
        modalVC.createdAt = self.createdAt
        modalVC.objID = self.objID
    }
person GameLoading    schedule 05.05.2016
comment
Пробовал это, и все еще получаю 0 элементов. - person Roduck Nickes; 05.05.2016