【发布时间】:2016-06-05 11:22:43
【问题描述】:
我有一个 dataTask + completionHandler 方法来从 Web 服务器下载数据。到目前为止,我已经实现了这个:
let task = session.dataTaskWithURL(url, completionHandler: {
(pageData,response,error) in
...
...
let code = urlHttpResponse.statusCode
switch code {
case 200:
self.fetchedPages.updateValue(pageData, forKey: pageNumber)
case 404:
self.fetchedPages.updateValue(nil, forKey: pageNumber) //No data exists for that page
default:
self.fetchedPages.updateValue(nil, forKey: pageNumber) //No gurantee data exists for that page
}
NSNotificationCenter.defaultCenter().postNotificationName("pageDataDownloaded", object: self, userInfo: ["numberForDownloadedPage":pageNumber])
我想知道如果 statusCode 是 3xx 错误会发生什么? pageData 是否会包含重定向位置的数据?换句话说,我应该添加
case _ where code >= 300 && code < 400:
self.fetchedPages.updateValue(pageData, forKey: pageNumber)
或者是否会再次调用处理程序,其中 pageData 包含重定向位置的值和新的 200 状态代码?还是我只能使用委托才能正确处理重定向?
【问题讨论】:
标签: ios swift macos nsurlsession foundation