2016-12-01 3 views
-2

Я сейчас в настоящее время изменяю этот учебник от https://www.simplifiedios.net/swift-php-mysql-tutorial/. Цель программы - закрыть ViewController, если получено правильное сообщение и отобразить UIAltertAction, если получено недопустимое сообщение. Может ли быть что-то, что мне не хватает, что «notChangingVariable» никогда не меняется?Быстрая, не меняющаяся переменная

...IBACTION... 
    var notChangingVariable: Int 

    notChangingVariable = 0 
    ...othervariablesdeclared... 
    let task = URLSession.shared.dataTask(with: request as URLRequest){ 
     data, response, error in 
     if(error != nil){ 
      return; 
     } 

     //parsing the response 
     do{ 
      //converting resonse to NSDictionary 
      let myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 
      //parsing the json 
      if let parseJSON = myJSON{ 
       var msg : String! 
       //getting the json response 
       msg = parseJSON["message"] as! String? 
       if(msg == "SameTeam"){ 
        print(msg) 
        notChangingVariable = 1 
        print(notChangingVariable) 
       } 
      } 
     }catch{ 
      print("error32 is \(error)") 
     } 
    } 
    task.resume() 
    print(notChangingVariable) //IS 0 

    ...FURTHER USE notChangingVariable... 
+1

Об этом было задано и уже много сказано. Пожалуйста, посмотрите на этот пример - если вам это не нравится, есть много других. – Moritz

ответ

0

Линия

notChangingVariable = 1 

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

print(notChangingVariable) //IS 0 
+0

Итак, в какой момент/как я могу использовать его после его официального изменения? – HONGNAT

+0

Вы можете вызвать функцию из обработчика завершения, в котором вы можете использовать свой var – Roee84

+0

. Хорошо, я сделал это, но теперь возникает другая проблема, когда я получаю «завершение с неперехваченным исключением типа NSException», когда я пытаюсь пропустить контроллер представления в закрытие или Показать контроллер действия – HONGNAT

0

вы печатаете его до этого исполнения части:

do{//converting resonse to NSDictionary 
      let myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 
      //parsing the json 
      if let parseJSON = myJSON{ 
       var msg : String! 
       //getting the json response 
       msg = parseJSON["message"] as! String? 
       if(msg == "SameTeam"){ 
        print(msg) 
        notChangingVariable = 1 
        print(notChangingVariable) 
       } 
      } 
     } 

он никогда не изменится в этом случае ,

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