2016-11-08 3 views
0

私は以下のコードを持っていますが、いずれかのステートメントを出力するのではなく、両方のステートメントが出力されます。文のどちらかではなく両方の引数を出力する場合

EDITED:

試行錯誤の多くの後、私はまだ解決策への近くに、私はダウンだけで最低限に私のコードを凝縮していない午前中に他のすべてのコントロールを削除しましたこの、まだ動作していないを解決しようとする試みは、ここでは単純な単一スイッチに接続されている私の最小限のコードは次のとおりです。

//

輸入のUIKit

クラスViewControllerを:のUIViewController {

@IBOutlet weak var mySwitch: UISwitch! 
@IBAction func buttonClicked(_ sender: Any) { 


    let switchOn = mySwitch.isOn 
    let endpoint = "http://10.0.1.147/setpins" 
    let urlString = endpoint + "?D2=" + (switchOn ? "0" : "1023") 

    mySwitch.setOn(!switchOn, animated:true) 

    var request = URLRequest(url: URL(string: urlString)!) 
    request.httpMethod = "POST" 
    let task = URLSession.shared.dataTask(with: request) { data, response, error in 

     guard error == nil else { 
      print("error=\(error)") 
      return 
     } 

     // You can print out response object 
     print("response = \(response)") 

    } 
    task.resume() 

} 


} 

しかし:まだ

response = Optional(<NSHTTPURLResponse: 0x17402d9e0> { URL: pttp://10.0.1.147/setpins?D1=0 } { status code: 200, headers { 
    "Access-Control-Allow-Origin" = "*"; 
    Connection = close; 
    "Content-Length" = 7; 
    "Content-Type" = "text/plain"; 
} }) 

response = Optional(<NSHTTPURLResponse: 0x17002c8a0> { URL: pttp://10.0.1.147/setpins?D2=1023 } { status code: 200, headers { 
    "Access-Control-Allow-Origin" = "*"; 
    Connection = close; 
    "Content-Length" = 7; 
    "Content-Type" = "text/plain"; 
+0

オンまたはオフによって出力が逆になることに注意してください。 –

+0

質問が不明です。もっと詳細を共有できますか? –

+0

Nazmul、私が言っているのは、if then else文がifまたはelseの代わりに両方の引数を出力するということです。 –

答えて

0

は、他の宣言とともにif..elseブロックのうち、task.resumeを移動してみてください。..同時に、各引数の出力の出力を得ます。

//declare other variables here 
if .... { 
    ... 
    ... 
    ... 
} else { 
    ... 
    ... 
} 

let task = URLSession.shared.dataTask(with: request) { 
    (data: Data?, response: URLResponse?, error: Error?) in 
     if error != nil{ 
      print("error=\(error)") 
      return 
     } 
     // You can print out response object 
     print("response = \(response)") 
} 
task.resume() 
+1

うまくいかない - 'task'は' if'-'else'スコープで宣言されているので、外には見えません。 –

+0

@AlexanderDoloz本当です。しかし、すべての宣言がif-elseの範囲外に移動された場合はうまくいくはずです –

+0

アレックスに感謝しましたが、実際には3つのメッセージブロックを送信しました –

1

あなたが実際にif必要はありません - そのような場合にはelseを。ここではあなたの完全に書き直されたコードです - それを実行し、重複の問題がなくなるかどうかを見てみましょう。

let switchOn = mySwitch.isOn 
switchState.text = switchOn ? "OFF" : "ON" 
let endpoint = "http://10.0.1.147/setpins" 
let urlString = endpoint + "?D2=" + (switchOn ? "0" : "1023") 

mySwitch.setOn(!switchOn, animated:true) 

var request = URLRequest(url: URL(string: urlString)!) 
request.httpMethod = "POST" 
let task = URLSession.shared.dataTask(with: request) { data, response, error in 

    guard error == nil else { 
     print("error=\(error)") 
     return 
    } 

    // You can print out response object 
    print("response = \(response)") 

} 
task.resume() 
関連する問題