加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift / Xcode中将JSON从AlamoFire / SwiftyJSON转换为Diction

发布时间:2020-12-14 02:25:52 所属栏目:百科 来源:网络整理
导读:我的头会爆炸:) – 我一直试图从我的服务器获取一个 JSON字符串到一个字典值,我无法让它工作. 我想要(从我的服务器 – 这是动态的,我希望我的应用程序能够在需要时从服务器提取新数据): {"1":"Location 1","2":"Location 2","3":"Location 3"} 使用Swift在X
我的头会爆炸:) – 我一直试图从我的服务器获取一个 JSON字符串到一个字典值,我无法让它工作.

我想要(从我的服务器 – 这是动态的,我希望我的应用程序能够在需要时从服务器提取新数据):

{"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{ $0.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 locationID = post[String(closestBeacon.minor.integerValue)]!

虽然这肯定会有效,但更好的解决方案是将您的帖子转换为[Int:String]类型字典,就像您在responseJSON闭包中所期望的那样.这是如何工作的.

let json = JSON(data)
var post = [Int: String]()

for (key,object) in json {
    post[key.toInt()!] = object.stringValue
}

如果密钥或对象无法分别转换为Int或String,您可能希望增加一些安全性,但我会留给您.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读