NSURLProtocol& swift - ios7中的错误

时间:2014-10-03 08:38:33

标签: ios ios7 swift nsurlprotocol

我尝试按照以下教程中的说明实现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?谢谢!

2 个答案:

答案 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()

这应该为您提供原始请求的可变副本,该副本应该正常播放。