2016-11-08 42 views
0

我有下面的代碼,而不是輸出任何一個語句;這兩個語句是輸出:如果聲明輸出兩個參數而不是?

編輯:

大量的試驗和錯誤後,我仍然沒有接近一個解決方案,我都凝結着我的代碼下降到只有最低限度,並在去除所有其他控件試圖解決這一點,仍然沒有工作,這是我的是連接到一個簡單的單開關最少的代碼:

//

進口的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() 

} 


} 

BUT:仍然獲得每個參數輸出的輸出同時..

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

將不起作用 - '任務'在'if'-else'範圍內聲明,因此不會在外部可見。 –

+0

@AlexanderDoloz True。但它應該工作,如果所有的聲明被移到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()