无法转换表达式的类型'NSData?'输入'NSData?'

时间:2014-12-28 11:32:00

标签: post swift nsdata

我在尝试附加HTTPbody时遇到了这个无意义的错误,但在谷歌搜索时我找不到任何答案。

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()
}

任何线索?

1 个答案:

答案 0 :(得分:2)

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")!