Swift Update ViewController变量,带有dataTaskWithRequest的结果

时间:2016-03-09 21:06:03

标签: ios swift

我在这方面看过类似的帖子,但没有什么可以帮助我。我不能为我的生活决定为什么我无法从我的任务中提取数据。我正在尝试使用从我构建的Web服务的SOAP XML响应中获取的数据更新对象(myUser)。我是Swift和IOS的新手,但我用C#完成了这个。我可以使用Web服务的结果更新viewcontroller上的标签,但不能更新类变量。在此先感谢您的帮助!

class FirstViewController: UIViewController {
    @IBOutlet weak var label: UILabel! //CAN UPDATE THIS FROM TASK
    var myUser = User() //CAN NOT UPDATE THIS FROM TASK
    func soapRequest(){
    ...
        let task = session.dataTaskWithRequest(request) {(data, response, error)-> Void in
           do{ xmlResponse = try AEXMLDocument(xmlData: data!)}
           catch{print("\(error)")}

           //Example of the data I am trying to send to the ViewController object
           let firstName = xmlResponse.root["element1"].stringValue

           //I've tried this
           dispatch_async(dispatch_get_main_queue(), { () -> Void in
              self.myUser.firstName = firstName //This does not work
              self.label.text = firstName //This DOES work
           })
        }
        task.resume()
    }
}

1 个答案:

答案 0 :(得分:0)

丹的评论是我的问题的正确解决方案。代码正在正确执行,但由于请求是异步的,因此没有及时完成,我认为它已被破坏。

  

您的网络请求是异步的,它还没有完成   您在viewDidLoad中打印值,因此将不会设置该值   然而。 - dan 1小时前