2016-12-01 8 views
-2

現在、このチュートリアルをhttps://www.simplifiedios.net/swift-php-mysql-tutorial/から変更しています。プログラムの目的は、正しいメッセージが受信された場合はViewControllerを閉じ、無効なメッセージが受信された場合はUIAltertActionを表示することです。私は "notChangingVariable"が決して変化していないということがありますか?変数が変更されていない

notChangingVariable = 1 

...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

ラインが完了ハンドラ内です。 それが呼び出され、varが変更されますが、あなたがこの部分の実行前にそれを印刷している行の後

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) 
       } 
      } 
     } 

それは、このシナリオでは変更されることはありません。

関連する問題