我在这方面看过类似的帖子,但没有什么可以帮助我。我不能为我的生活决定为什么我无法从我的任务中提取数据。我正在尝试使用从我构建的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()
}
}
答案 0 :(得分:0)
丹的评论是我的问题的正确解决方案。代码正在正确执行,但由于请求是异步的,因此没有及时完成,我认为它已被破坏。
您的网络请求是异步的,它还没有完成 您在viewDidLoad中打印值,因此将不会设置该值 然而。 - dan 1小时前