大佬教程收集整理的这篇文章主要介绍了ios – 如何在Swift 3中将NSData转换为数据?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func getAddressForLatLng(latitude: String,longitude: String) { let url = NSURL(String: "\(baseUrl)latlng=\(latitudE),\(longitudE)&key=\(apikey)") let data = NSData(contentsOf: url! as URL) let json = try! JSONserialization.jsonObject(with: data,options: JSONserialization.ReadingOptions.allowFragments) as! Dictionary if let result = json["results"] as? Dictionary { if let address = result[0]["address_components"] as? Array { let number = address[0]["short_name"] as! String let street = address[1]["short_name"] as! String let city = address[2]["short_name"] as! String let state = address[4]["short_name"] as! String let zip = address[6]["short_name"] as! String weatherDisplay.text = "\(city),\(statE)" } } }
在线上:
let json = try! JSONserialization.jsonObject(with: data,options: JSONserialization.ReadingOptions.allowFragments) as! Dictionary
我收到此错误:
CAnnot invoke 'jsonObject' with an argument list of type '(with: NSData?,options: JSONserialization.ReadingOptions)'
我究竟做错了什么?
此外,您的类型是可选的,但您不能传入可选类型,因此您需要打开它(在此示例中,使用data = data {/ * stuff here * /}):
func getAddressForLatLng(latitude: String,\(longitudE)&key=\(apikey)") let data = NSData(contentsOf: url! as URL) as Data? // <==== Added 'as Data?' if let data = data { // <====== Added 'if let' let json = try! JSONserialization.jsonObject(with: data,options: JSONserialization.ReadingOptions.allowFragments) as! Dictionary if let result = json["results"] as? Dictionary { if let address = result[0]["address_components"] as? Array { let number = address[0]["short_name"] as! String let street = address[1]["short_name"] as! String let city = address[2]["short_name"] as! String let state = address[4]["short_name"] as! String let zip = address[6]["short_name"] as! String weatherDisplay.text = "\(city),\(statE)" } } } }
更新:
您需要改变的另一件事是:
let json = try! JSONserialization.jsonObject(with: data,options: JSONserialization.ReadingOptions.allowFragments) as! Dictionary
当你转换为类型Dictionary时,编译器不知道你在说什么,因为Dictionary是generic type.所以你需要强制转换为Dictionary< String,AnyObject>或[String:AnyObject](它们是相同的).
以上是大佬教程为你收集整理的ios – 如何在Swift 3中将NSData转换为数据?全部内容,希望文章能够帮你解决ios – 如何在Swift 3中将NSData转换为数据?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。