0

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

4

2 回答 2

1

似乎在最新版本的 XCode (6.0.1) 中,无法转换NSURLRequestNSMutableURLRequest

这是快速编译器错误消息:

'NSURLRequest' is not convertible to 'NSMutableURLRequest'

NSMutableURLRequest您可以通过这种替代方式创建一个实例

var newRequest = NSMutableURLRequest(URL: self.request.URL, 
               cachePolicy: self.request.cachePolicy, 
               timeoutInterval: self.request.timeoutInterval)
于 2014-10-03T09:19:42.840 回答
0

您的问题是(非可变)NSURLRequest 的副本是另一个不可变的 NSURLRequest,因此不能转换为 NSMutableURLRequest。尝试:

var newRequest = self.request.mutableCopy() as NSMutableURLRequest // mutableCopy() instead of copy()

这应该为您提供原始请求的可变副本,它应该可以很好地转换。

于 2014-10-08T09:25:41.107 回答