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
}
}
}
我正在调用这行代码:
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
}
}
}