无法将“NSMutableURLRequest”(0x11beb7040)类型的值转换为“Alamofire.URLRequestConvertible”(0x11beb9040)
Posted
技术标签:
【中文标题】无法将“NSMutableURLRequest”(0x11beb7040)类型的值转换为“Alamofire.URLRequestConvertible”(0x11beb9040)【英文标题】:Could not cast value of type 'NSMutableURLRequest' (0x11beb7040) to 'Alamofire.URLRequestConvertible' (0x11beb9040) 【发布时间】:2016-12-13 06:12:09 【问题描述】:当构建我的代码然后在Alamofire.request(request as! URLRequestConvertible).responseJSON()
上崩溃。请建议如何解决此崩溃
let url = NSURL(string: "https://jsonplaceholder.typicode.com/users")
let request = NSMutableURLRequest(url:url! as URL)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
Alamofire.request(request as! URLRequestConvertible).responseJSON() response in
switch response.result
case .success(let data):
print(" i got my Data Yup",data)
case .failure(let error):
print(error)
【问题讨论】:
可能是这会造成 Alamofire.request(request as! URLRequestConvertible).responseJSON() 问题。 同样在第二行你使用 let request = NSMutableURLRequest(url:url! as URL) 但在第五行你把 request 当作! URLRequestConvertible 。为什么?我觉得没必要。不带敞篷车试试。 【参考方案1】:在 Swift 3 中,您只需将 NSMutableURLRequest 更改为 URLRequest 即可。不需要投。 此外,设置 var 使其可以快速可变。 :) 谢谢马库斯的评论。
【讨论】:
谢谢,这行得通。另外不要忘记设置 var 而不是 let 使其可变。【参考方案2】:将let request = NSMutableURLRequest(url:url! as URL)
更改为
var request = URLRequest(url: NSURL(string: url)! as URL)
您的代码如下所示:-
let url = NSURL(string: "https://jsonplaceholder.typicode.com/users")
var request = URLRequest(url: NSURL(string: url)! as URL)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
Alamofire.request(request as! URLRequestConvertible).responseJSON() response in
switch response.result
case .success(let data):
print(" i got my Data Yup",data)
case .failure(let error):
print(error)
【讨论】:
您想通过一些解释来扩充您的纯代码答案吗?【参考方案3】:您也可以尝试使用以下请求方法的语法:
Alamofire.request(strURL,method: .post, parameters: parameters as? [String : AnyObject], encoding: URLEncoding.default)
【讨论】:
以上是关于无法将“NSMutableURLRequest”(0x11beb7040)类型的值转换为“Alamofire.URLRequestConvertible”(0x11beb9040)的主要内容,如果未能解决你的问题,请参考以下文章
无法使用类型为“(NSMutableURLRequest,(_,_,_) throws -> _)”的参数列表调用“dataTaskWithRequest”
POST 请求未考虑 NSMutableURLRequest 超时间隔
NSMutableURLRequest 处理soap请求中的特殊字符