我试图从
更改我的代码 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
答案 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集合类型(NSArray
,NSDictionary
)。