【发布时间】:2015-12-16 08:34:43
【问题描述】:
有以下问题:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSURLSessionDataTask 响应]:无法识别的选择器发送到实例 0x7fced8599e60”
这就是它的来源:
GET("users/check_email", parameters: parameters, progress: nil, success: { sessionDataTask, response in
//the line with error
let statusCode = (sessionDataTask.response as? NSHTTPURLResponse)?.statusCode ?? 0
completionBlock(self.queryType?.mockStatusCode ?? statusCode, nil)
}) { sessionDataTask, error in
completionBlock(nil, NSError(responseError: error))
}
当我尝试模拟响应时会发生这种情况。在代码的某个地方,我传递给success 块:
var sessionDataTask = NSURLSessionDataTask()
success?(sessionDataTask, queryType?.mockResponse())
sessionDataTask 有问题。 NSURLSessionDataTask 继承自具有 response 属性的 NSURLSessionTask。不知道为什么会出现这个错误。
【问题讨论】:
-
将断点放在“statusCode = (sessionDataTask.response as?NSHTTPURLResponse)?...”行并检查 sessionDataTask 对象类型。
-
po sessionDataTask返回<NSURLSessionDataTask: 0x7f9ca9d1d4e0> -
检查...正确的论点是否到来?
-
再澄清一点,不明白你的意思。
-
handler给你sessionDataTask和response,试试在(sessionDataTask.response as?NSHTTPURLResponse)中使用response而不是sessionDataTask?