Данные от разбора не передаются через prepareForSegue - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу получить objectId из синтаксического анализа и передать его через segue.Но objectId передается как пустая строка:

class QueryViewController: UIViewController {

var objectIdFormParse = String()

@IBAction func makeQueryButtonTapped(_ sender: UIButton) {

makeSearchObject.saveInBackground { (success, error) in
        if error == nil {
            if let getObjectId = makeSearchObject.objectId {
             self.objectIdFormParse = getObjectId
                print("objectId in queryVC: \(self.objectIdForomParse)")
            }
            //Successfully saved
        } else {
            //Error, check error
        }
    }
    performSegue(withIdentifier: resultsSegue, sender: self)
}

 override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.identifier == resultsSegue
        {
            let destination = segue.destination as! ResultsViewController

            destination.objectIdFromQueryVC = objectIdForomParse
        }
    }
}

Оператор print печатает objectId правильно, но последовательность проходит пусто.

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете передать данные через Sege.просто измените строку выполнения segue на следующую:

performSegue(withIdentifier: resultsSegue, sender: objectIdForomParse)

И в вашем методе подготовки к segue добавьте следующие строки:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.identifier == resultsSegue
        {
            let destination = segue.destination as! ResultsViewController
            let objectIDParse = sender as! String
            destination.objectIdFromQueryVC = objectIDParse
        }
    }
}

Выполните segue, если ваша ошибка равна нулю, так как вы устанавливаете objectIdForomParseтолько если ваша ошибка равна нулю.

Обновление:

@IBAction func makeQueryButtonTapped(_ sender: UIButton) {

makeSearchObject.saveInBackground { (success, error) in
        if error == nil {
            if let getObjectId = makeSearchObject.objectId {
             self.objectIdFormParse = getObjectId
                print("objectId in queryVC: \(self.objectIdForomParse)")
        performSegue(withIdentifier: resultsSegue, sender: self)
            }
            //Successfully saved
        } else {
            //Error, check error
        }
    }

}

 override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.identifier == resultsSegue
        {
            let destination = segue.destination as! ResultsViewController

            destination.objectIdFromQueryVC = objectIdForomParse
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...