我尝试按照以下教程中的说明实现NSURLProtocol:http://www.raywenderlich.com/76735/using-nsurlprotocol-swift
一切都适用于iOS8但在iOS7中我在startLoading()中遇到运行时错误。
override func startLoading() {
var newRequest = self.request.copy() as NSMutableURLRequest //<- this line fails
NSURLProtocol.setProperty(true, forKey: "MyURLProtocolHandledKey", inRequest: newRequest)
self.connection = NSURLConnection(request: newRequest, delegate: self)
}
错误:WebCore:CFNetwork Loader(10):EXC_BREAKPOINT
有没有人成功实施过NSURLProtocol?谢谢!
答案 0 :(得分:1)
似乎在最新版本的XCode(6.0.1)中,无法将NSURLRequest
投射到NSMutableURLRequest
以下是swift编译器错误消息:
'NSURLRequest' is not convertible to 'NSMutableURLRequest'
您可以用另一种方式创建NSMutableURLRequest
的实例
var newRequest = NSMutableURLRequest(URL: self.request.URL,
cachePolicy: self.request.cachePolicy,
timeoutInterval: self.request.timeoutInterval)
答案 1 :(得分:0)
你的问题是(不可变的)NSURLRequest的副本是另一个不可变的NSURLRequest,因此无法强制转换为NSMutableURLRequest。尝试:
var newRequest = self.request.mutableCopy() as NSMutableURLRequest // mutableCopy() instead of copy()
这应该为您提供原始请求的可变副本,该副本应该正常播放。