2016-03-09 2 views
-1

Я видел похожие записи по этому вопросу, но ничего не помогает. Я не могу на всю жизнь определить, почему я не могу извлечь данные из своей задачи. Я пытаюсь обновить объект (myUser) данными, полученными из XML-ответа SOAP из созданной веб-службы. Я новичок в Swift и IOS, но я сделал это с C#. Я могу обновить метку на viewcontroller с результатами веб-службы, но не с переменной класса. Заранее спасибо за вашу помощь!Swift Update ViewController Переменная с результатами dataTaskWithRequest

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

вставьте код и что вы пытались выполнить. – DeyaEldeen

+0

Привет, DeyaEldeen, я отправил свой вопрос преждевременно, а затем добавил код позже. Вы видите это сейчас? – GED125

+0

Что значит «это не работает»? Что происходит? – dan

ответ

0

Комментарий Дэн был правильным решением моей проблемы. Код выполнялся правильно, но поскольку запрос является асинхронным, он не заканчивался вовремя, и я предположил, что он был сломан.

Ваш запрос сети асинхронно, она не будет закончена, когда печати значение в viewDidLoad, так что значение не будет установлен еще. - dan 1 час назад

Смежные вопросы