
在线上:
@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转换为数据?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)