gpt4 book ai didi

ios - 带有离线 URL 的 NSURLSession

转载 作者:行者123 更新时间:2023-11-29 02:24:17 24 4
gpt4 key购买 nike

我调用这行代码:

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{
...
}

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

最佳答案

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

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
}

}
}

关于ios - 带有离线 URL 的 NSURLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com