来自解析的数据未通过 prepareForSegue 传递



我想从解析中获取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 语句正确打印对象 Id,但 segue 为空。

您可以通过执行 segue 传递数据。 只需将执行 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
        }
    }
}

最新更新