ios – 如何在Swift 3中将NSData转换为数据?

ios – 如何在Swift 3中将NSData转换为数据?,第1张

概述我正在尝试创建一个简单的天气应用程序来抓取用户的位置,并使用Google Maps api显示简单的天气数据.一切正常,除了这部分我拿 JSON并获取地址. func getAddressForLatLng(latitude: String, longitude: String) { let url = NSURL(string: "\(baseUrl)latlng=\(latitude) 我正在尝试创建一个简单的天气应用程序来抓取用户的位置,并使用Google Maps API显示简单的天气数据.一切正常,除了这部分我拿 JSON并获取地址.

@H_404_11@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)" } }}

在线上:

@H_404_11@let Json = try! JsONSerialization.JsonObject(with: data,options: JsONSerialization.ReadingOptions.allowFragments) as! Dictionary

我收到此错误:

@H_404_11@Cannot invoke 'JsonObject' with an argument List of type '(with: NSData?,options: JsONSerialization.ReadingOptions)'

我究竟做错了什么?

解决方法 你需要改变一些事情.首先,您正在使用NSData.您应该使用Swift类型的数据.要从NSData转换?到数据?,只需添加为数据?到变量声明的结尾.

此外,您的类型是可选的,但您不能传入可选类型,因此您需要打开它(在此示例中,使用data = data {/ * stuff here * /}):

@H_404_11@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)" } } }}

更新:

您需要改变的另一件事是:

@H_404_11@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转换为数据?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1035174.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存