gpt4 book ai didi

xcode - 将 JSON 从 AlamoFire/SwiftyJSON 转换为 Swift/Xcode 中的字典

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:02 25 4
gpt4 key购买 nike

我的脑袋要爆炸了:) - 我一直在尝试从我的服务器获取一个 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' is not convertible to 'String',当我使用静态变量标签字典时我没有得到这个错误。我是否试图错误地从服务器获取数据?我究竟做错了什么???我认为具有未声明类型的 var 标签允许 Swift 弄清楚它需要什么,我如何从 JSON 部分做同样的事情?

最佳答案

哦,你离得太近了!

你的问题是你的 post 字典是一个 [String: String] 而不是你认为的 [Int: String]是。您有几种修复方法,但目前最简单的方法是执行以下操作:

let locationID = post[String(closestBeacon.minor.integerValue)]!

虽然这肯定有效,但更好的解决方案是将您的 post 转换为 [Int: String] 类型的字典,就像您在 responseJSON 中期望的那样 关闭。这是它的工作原理。

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

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

如果 keyobject 无法转换为 IntString,但我会把它留给你。

关于xcode - 将 JSON 从 AlamoFire/SwiftyJSON 转换为 Swift/Xcode 中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com