Ios 将数据与ContentsOfUrl一起使用
我这里有一段代码片段:Ios 将数据与ContentsOfUrl一起使用,ios,swift,Ios,Swift,我这里有一段代码片段: let endpointURL = URL(string: "http://foobar.com") let downloadTask = URLSession.shared.downloadTask(with: endpointURL!, completionHandler: { url, response, error in if (error == nil) { let dataObject = NSData(contentsOfUR
let endpointURL = URL(string: "http://foobar.com")
let downloadTask = URLSession.shared.downloadTask(with: endpointURL!, completionHandler: { url, response, error in
if (error == nil) {
let dataObject = NSData(contentsOfURL: endpointURL!)
let jsonArray: Array = JSONSerialization.JSONObjectWithData(dataObject!, options: nil, error: nil) as Array
}
})
downloadTask.resume()
我有一个问题:
Ambiguous use of 'init(contentsOfURL:)' for NSData part
我怎样才能使它明确 我建议在Swift 3中使用类似的方法来加载JSON数据dataTask比downloadTask更合适
这是斯威夫特。使用数据,而不是NSData。不要使用数组。声明特定类型的Swift数组,如[String]或[[String:Any]]或任何需要的类型。您的语法毫无意义,因为您将直接从endpointURL加载数据。使用dataTask->返回的数据参数或使用downloadTask->返回的url参数。在您的情况下–返回的数据是JSON–dataTask是适当的API如果我使用数据,我会得到:参数标签“contentsOfURL:”不匹配任何可用的重载。我修复了它以使用[String],谢谢!PS:您将Swift 2 NSDatacontentsOfURL、JSONObjectWithData和Swift 3 URLstring:code混为一谈。这段代码无法编译。明白了!谢谢:
let endpointURL = URL(string: "http://foobar.com")
let dataTask = URLSession.shared.dataTask(with: endpointURL!) { data, response, error in
guard error == nil else {
print(error!)
return
}
do {
// the assumed result type is `[[String:Any]]` cast it to the expected type
if let jsonArray = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
print(jsonArray)
}
} catch {
print(error)
}
}
dataTask.resume()