额外的争论错误(我不明白)

时间:2016-07-11 17:08:05

标签: ios json swift xcode swift2

我之前的问题:https://stackoverflow.com/questions/38228368/i-dont-understand-this-error-extra-argument-error-in-call?noredirect=1#comment63957616_38228368

我试图从

更改我的代码
        var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)

        var urlData: NSData?

        do {
            urlData = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response){
            }
        } catch let error as NSError {
            print(error.localizedDescription)
        }

但我仍然收到错误说"额外参数' returnResponse'在电话"。有人可以帮我解决这个问题吗?我也得到了"额外的争论'错误'在电话"在这一行

    let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSDictionary

3 个答案:

答案 0 :(得分:1)

尝试按以下方式声明可能会对您有所帮助

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as NSDictionary

答案 1 :(得分:1)

你的代码很糟糕。您使用的error: &error参数不是必需的,请删除{}末尾的sendSynchronousRequest。 BTW sendSynchronousRequest已弃用,请使用NSURLSession

所以代码应如下所示:

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSDictionary

答案 2 :(得分:0)

我建议使用这个现代API

NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
  if error != nil {
    print(error!)
  } else {
    do {
      let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as! [String:AnyObject]
      print(jsonData)
      // parse jsonData here and then update the UI
    } catch let error as NSError {
      print(error.localizedDescription)
    }
  }
}.resume()

在Swift中,除非你绝对没有选择,否则不要使用Foundation集合类型(NSArrayNSDictionary)。