NSURL离线会话URL

NSURLSession with a offline 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{
   ...
}

这不是一个好的代码,但暂时解决了我的问题。

您需要为其添加一个完成块。 只需创建一个函数即可开始下载:

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 
        }

    }
}