Swift HTTPURLResponse的一个坑

# 前言

坑是一定要踩的不然技术怎么进步呢~

# 场景

今天在调试解决一个视频断点下载的问题,发现视频地址播放后总是直接返回错误而不会下载。

经过调试后我发现我总是获取不到该视频的视频长度,what?
这时我已经大概知道应该是在获取 HTTPURLResponse 的 allHeaderFields 里 Content-Range 是有问题的。

Swift HTTPURLResponse的一个坑_第1张图片
header.png

我观察了 HTTP Header 还是熟悉的参数并没有问题,我在Objective-C 写了例子提取 Content-Range ,并没有问题。

HTTPURLResponse.allHeaderFields[@"Content-Range"]
Content-Range.png

Swift 中使用同样的方式获取

let contentRange = HTTPurlResponse.allHeaderFields["Content-Range"] as? String
image.png

为什么Swift 会有问题呢? 思考了很久我发现HTTP Header 的 content-range 是小写的,但是我记忆中allHeaderFields 是不区分大小写的。

Swift HTTPURLResponse的一个坑_第2张图片
文档.png

然而这就是最坑的。。我在Swift中尝试了小写获取就成功了。。这看起来应该是Swift 的问题吧。 这里要提一下我是在Swift 3的环境中调试的。

Swift HTTPURLResponse的一个坑_第3张图片
image.png

虽然只是个小坑,不过还是记录下来,也许还有人会踩到同样的坑?

你可能感兴趣的:(Swift HTTPURLResponse的一个坑)