swift – 使用dataTask返回值的函数

前端之家收集整理的这篇文章主要介绍了swift – 使用dataTask返回值的函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不想检查我的url statusCode是否等于200,如果statusCode等于200,我创建了一个返回布尔函数函数,我正在使用dataTask,但我不知道如何返回一个值:
  1. class func checkUrl(urlString: String) -> Bool{
  2.  
  3. let urlPath: String = urlString
  4. var url: NSURL = NSURL(string: urlPath)!
  5. var request: NSURLRequest = NSURLRequest(url: url as URL)
  6. var response: URLResponse?
  7.  
  8. let session = Foundation.URLSession.shared
  9.  
  10.  
  11. var task = session.dataTask(with: request as URLRequest,completionHandler: {(data,response,error) in
  12. if let error = error {
  13. print(error)
  14. }
  15.  
  16. if let data = data{
  17. print("data =\(data)")
  18. }
  19. if let response = response {
  20. print("url = \(response.url!)")
  21. print("response = \(response)")
  22. let httpResponse = response as! HTTPURLResponse
  23. print("response code = \(httpResponse.statusCode)")
  24.  
  25. if httpResponse.statusCode == 200{
  26. return true
  27. } else {
  28. return false
  29. }
  30. }
  31. })
  32. task.resume()
  33. }

if else中的返回值返回错误

Unexpected non-void return value in void function

为了返回值,你应该使用块.尝试声明你的功能如下:
  1. class func checkUrl(urlString: String,finished: ((isSuccess: Bool)->Void) {
  2.  
  3. let urlPath: String = urlString
  4. var url: NSURL = NSURL(string: urlPath)!
  5. var request: NSURLRequest = NSURLRequest(url: url as URL)
  6. var response: URLResponse?
  7.  
  8. let session = Foundation.URLSession.shared
  9.  
  10.  
  11. var task = session.dataTask(with: request as URLRequest,error) in
  12. if let error = error {
  13. print(error)
  14. }
  15.  
  16. if let data = data{
  17. print("data =\(data)")
  18. }
  19. if let response = response {
  20. print("url = \(response.url!)")
  21. print("response = \(response)")
  22. let httpResponse = response as! HTTPURLResponse
  23. print("response code = \(httpResponse.statusCode)")
  24.  
  25. if httpResponse.statusCode == 200{
  26. finished(isSuccess: true)
  27. } else {
  28. finished(isSuccess: false)
  29. }
  30. }
  31. })
  32. task.resume()
  33. }

然后像这样调用它:

  1. checkUrl("http://myBestURL.com",finished { isSuccess in
  2. // Handle logic after return here
  3. })

希望这会有所帮助.

猜你在找的Swift相关文章