我有NSMutableURLRequest子类,如下所示:
self.init(url: url)
这会在super
行引起无限循环。使用self
代替SELECT deptName, empFirstName, empLastName, empTitle, empHourlyWage
FROM department
JOIN employee on department.deptID=employee.deptID
WHERE empHourlyWage >= 25.00
AND empTitle LIKE ‘%Analyst’
ORDER BY deptName, empTitle;
也不起作用。我该如何解决?
答案 0 :(得分:2)
不幸的是,您不能在子类中覆盖确切的便捷初始化程序。
您可能需要编写如下内容:
class CustomNSMutableURLRequest: NSMutableURLRequest {
convenience init(url : URL) {
self.init(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 60)
self.httpShouldHandleCookies = false
self.httpMethod = "GET"
print("Custom Request!")
}
}
但是我不确定是否真的需要子类化,我会像这样向URLRequest
添加一些工厂方法:
extension URLRequest {
public static func customRequest(url: URL) -> URLRequest {
var result = URLRequest(url: url)
result.httpShouldHandleCookies = false
result.httpMethod = "GET"
print("Custom Request!")
return result
}
}
答案 1 :(得分:2)
根据我的经验,您不能安全地将NSURLRequest子类化。如果这样做,NSURLSession会引起令人着迷的不当行为,其中一个请求的响应会错误地与其他请求相关联。
找到另一种方式,例如使用为NSURLProtocol设计的方法,将任意字符串附加到请求,并附加包含UUID的字符串,然后将其用作字典键。或将会话标识符与每个任务的标识符结合使用。无论哪种方式。