2015-01-02 37 views
0

我打电话这行代码:NSURLSession与离线URL

let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 
    ... 
} 

task.resume() 

,但我想处理时,URL处于脱机状态,当我没有从服务器接收回信息。

我不知道该怎么做,因为调用taskWithURL的过程永远不会停止,它会一直尝试与服务器连接。

有谁知道如何处理它?

** //////////////////////// ///////////

具有这种硬代码,我解决我的问题 **

if data != nil { 
    var urlContent = NSString(data: data!, encoding: NSUTF8StringEncoding) 
    if urlContent?.length > 0 { 
     ... 
    }else { 
     ... 
    } 
}else{ 
    ... 
} 

这不是一个很好的代码,但解决我的问题现在。

回答

1

您需要为其添加完成块。 只需创建一个函数来启动你下载:

func getDataFromUrl(url:NSURL, completion: ((data: NSData?) -> Void)) { 
    NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in 
     completion(data: NSData(data: data)) 
    }.resume() 
} 

然后,你必须使用dispatch_async(dispatch_get_main_queue())

getDataFromUrl(NSURL(string: "http://.....")!) { data in 
    dispatch_async(dispatch_get_main_queue()) { 
     println("Finished downloading") 
     // you can use the data! here 
     if data != nil { 
      // there is data. do this 
     } else { 
      // there is no data. do that 
     } 

    } 
} 
+0

莱昂纳多,它并没有解决我的问题。 我仍然不知道是否从网址的数据返回的东西不是什么都没有 –

+0

但我想改变视图,如果数据没有返回.. Brs no堆hahah –

+0

@GabrielAraujo如果你想知道什么时候你没有得到任何回报,只需使用响应或错误变量来检查。例如,如果您的连接超时,则会出现此错误。 –