我想要(从我的服务器 – 这是动态的,我希望我的应用程序能够在需要时从服务器提取新数据):
{"1":"Location 1","2":"Location 2","3":"Location 3"}
使用Swift在Xcode中使用这个词典:
var labels = [ 1 : "Location 1",2 : "Location 2",3 : "Location 3" ]
这必须非常直接,但对于我的生活,我无法弄明白……
这是我的Swift – 我可以从服务器获取信息,但是我不能把它放到像我需要的字典中
var postEndpoint: String = "http://www.myserver.net/app/campus.PHP" Alamofire.request(.GET,postEndpoint) .responseJsON { (request,response,data,error) in if let anError = error { println("error") println(error) } else if let data: AnyObject = data { let post = JsON(data) println(post) } }
这导致:
{ "1" : "Location 1","2" : "Location 2","3" : "Location 3"}
我正在使用它的最终结果是具有以下代码的iBeacon实现:
let kNownBeacons = beacons.filter{let locationID = post[String(closestBeacon.minor.integerValue)]!.proximity != CLProximity.UnkNown } if (kNownBeacons.count > 0) { let closestBeacon = kNownBeacons[0] as CLBeacon let locationID = post[closestBeacon.minor.integerValue] self.locationLabel.text = locationID self.vIEw.backgroundcolor = self.colors[closestBeacon.minor.integerValue] }
我得到的错误是在self.locationLabel.text = locationID’JsON’不能转换为’String’,我在使用静态var标签字典时没有收到此错误.我是否试图从服务器获取错误的数据?我究竟做错了什么???我认为具有未声明类型的var标签允许Swift找出它需要什么,我如何从JsON部分做同样的事情?
哦,你太近了!你的问题是你的帖子字典是[String:String]而不是你认为的[Int:String].您有几种方法可以解决它,但现在最简单的方法就是执行以下 *** 作:
let Json = JsON(data)var post = [Int: String]()for (key,object) in Json { post[key.toInt()!] = object.stringValue}
虽然这肯定会有效,但更好的解决方案是将您的帖子转换为[Int:String]类型字典,就像您在responseJsON闭包中所期望的那样.这是如何工作的.
如果密钥或对象无法分别转换为Int或String,您可能希望增加一些安全性,但我会留给您.
总结以上是内存溢出为你收集整理的在Swift / Xcode中将JSON从AlamoFire / SwiftyJSON转换为Dictionary全部内容,希望文章能够帮你解决在Swift / Xcode中将JSON从AlamoFire / SwiftyJSON转换为Dictionary所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)