2016-11-08 43 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()