查询数据以将数据添加到 prepareForSegue 函数

Query for data to add data to prepareForSegue function

我正在尝试从 Parse table 查询数据以将其添加到 prepareForSegue 函数。但是一旦我进入 newViewController ,标签就是空白的。这是我的代码行。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "marathonDetail"){

        var upcoming: marathonDetailViewController = segue.destinationViewController as! marathonDetailViewController

        let indexPath = self.marathonsTableView.indexPathForSelectedRow!



        let currentCell = marathonsTableView.cellForRowAtIndexPath(indexPath) as! marathonTableViewCell

        let marathonEvents = currentCell.marathonName.text


        upcoming.nameMarathon = marathonEvents

        self.marathonsTableView.deselectRowAtIndexPath(indexPath, animated: true)

        var query = PFQuery(className: "marathons")
        query.whereKey("marathonName", equalTo: marathonEvents!)
        query.findObjectsInBackgroundWithBlock{
            (marathonPickeds: [PFObject]?, error: NSError?) -> Void in
            if (error == nil){
                if let marathonPicked = marathonPickeds as? [PFObject]?{
                    for marathonPicked in marathonPickeds!{

                var selectedDescription = marathonPicked.description

                upcoming.marathonDescription = selectedDescription
                         print(selectedDescription)
                    }

                }


            }else {

            print(error)

            }



        }


    }
}

marathonsEvents= currentCell.marathonName.text 运行良好,但 marathonDescription 为空。

有什么建议吗?我正在使用 Parse 作为我的后端 XCODE 7,并且 swift

您正在后台线程上执行网络调用,因此当它完成时您已经完成了 segue。您可能想要做的是:

  1. 将该查询逻辑拉出到一个单独的 class 中,将其从您的视图控制器中取出。
  2. 在这种情况下,在被推送到的视图控制器中执行请求。您可以在 viewWillAppear 开始,并在完成后刷新您的视图。看起来它拥有仅使用 marathonEvents.
  3. 执行请求所需的所有信息