我在尝试附加 HTTPbody 时遇到了这个无意义的错误,但在 Google 搜索时找不到任何答案。
func runRequest(url: String,arguments:String, method: String, closure: (NSData?, NSURLResponse, NSError?)->Void){
var finalUrl:String
var request:NSMutableURLRequest
if (method == "POST"){
finalUrl = url
request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "POST"
let data = (arguments as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody(data) // <-- Error here
}else{
finalUrl = url + arguments
request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "GET"
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
closure(data, response, error)
}
task.resume()
}
有什么线索吗?
最佳答案
HTTPBody
是一个属性,而不是一个方法。您需要分配给它而不是调用它:
request.HTTPBody = data
顺便说一句,您可能想将其更改为更安全的内容:
NSURL(string: url)!
NSURL 的初始化器是一个“失败”初始化器——也就是说,如果出现问题(例如 URL 格式错误),它会返回一个可能为 nil 的可选值。如果发生这种情况,!
上的 nil
将导致您的程序崩溃:
// fatal error: unexpectedly found nil while unwrapping an Optional value
let url = NSURL(string: "blah blah blah")!
关于post - 无法将表达式的类型 'NSData?' 转换为类型 'NSData?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676000/