post - 无法将表达式的类型 'NSData?' 转换为类型 'NSData?'

标签 post swift nsdata

我在尝试附加 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/

相关文章:

ios - 从字节中获取位的值 | swift 5

javascript - 关于发送的消息不起作用

jQuery GET 不发送浏览器中的 IE

iOS 推送通知取决于网站内容

ios - 显示页面时出现 UiNavigation 错误

ios - Objective-C NSURLConnection didReceiveData在NSData中创建错误的JSON

swift - 为什么 Data 和 NSData 打印不同

http - node.js 代理服务器发布到 http 服务器并在 http 服务器关闭时死亡

java - Java 中的后续 HTTPS POST 请求并保留 cookie

ios - Xcode swift : How to change button font size dynamically according to the size of the button?