【发布时间】:2016-09-27 13:07:40
【问题描述】:
我正在处理 Swift 3 和 php 文件之间的数据库连接。 发送到php的信息会被正确的传输到数据库中。
但是当我想将数据库中的信息打印到我的 xcode 中时,我遇到了问题。
我正在将此 json 发送到我的应用程序:
[{"latitude":"51.430536341034","longitude":"5.45947450542819"},
{"latitude":"51.4305299243587","longitude":"5.45964865535365"},
{"latitude":"51.4305299243587","longitude":"5.45964865535365"},
{"latitude":"51.4305299243587","longitude":"5.45964865535365"},
{"latitude":"51.4305299243587","longitude":"5.45964865535365"}]
我在 xcode 中打印了这个 JSON:
print(NSString(data: data!, encoding: String.Encoding.utf8.rawValue)!)
我尝试了本网站其他主题中描述的 2 个选项,它们都是关于 swift 3 和 json 问题的。
选项 1:
let parsedData = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:AnyObject]
当我运行应用程序时,出现了一个错误:
信号 SGBRT 无法将类型“__NSArrayI”(0x1b2a89cc8) 的值转换为“NSDictionary”(0x1b2a8a128)。
选项 2:
let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! Dictionary<String, AnyObject>
会发生相同的 Signal SGBRT 错误:
无法将“__NSArrayI”(0x1b2a89cc8) 类型的值转换为“NSDictionary”(0x1b2a8a128)。
我需要说我不是专业人士,但我是一个学习刻苦的学生,没有可以快速编程的人脉。因此,我希望在这里得到一些帮助,完成应用程序的这个功能。
如果你回答了这个话题,我很乐意在这里提供一些我应该尝试的其他代码。 谢谢。
【问题讨论】:
-
嗯,数组不是字典……!!您应该将结果转换为字典数组:
[[String:AnyObject]]而不仅仅是字典。 -
你不需要
allowFragments。此外,Dictionary<String, AnyObject>与[String:AnyObject]相同。 -
@EricAya 很好,解决了那个特定的错误,但是一个新的错误立即出现。当我想获得它的纬度时: parsedData["latitude"] 它会说 Type '[[String:AnyObject]]?'没有下标成员..
-
我们刚刚将您的 JSON 转换为 数组。当然你不能像字典一样下标。这是一个数组! 从数组中获取项目(字典)然后使用下标...
-
你的
json包含 dict 的数组 [ ] 不要尝试使用 dict ..