从 NSDictionary 访问数据
Posted
技术标签:
【中文标题】从 NSDictionary 访问数据【英文标题】:Access data from NSDictionary 【发布时间】:2015-03-04 23:40:12 【问题描述】:我正在尝试从 Swift 中的 NSDictionary
获取数据,但我无法做到这一点。
这是代码
let urlPath = "http://ws-report.goocity.it/Stats/json/GetReport"
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: data, response, error -> Void in
var result: NSDictionary
if error != nil
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if err != nil
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
else
//var arr : NSArray = jsonResult.valueForKey("Stats") as NSArray
//var cash: String? = jsonResult.valueForKey("Cash") as? NSString
let stats = jsonResult["Stats"]! as [[String : AnyObject]]
)
task.resume()
您可以看到点击 urlPath 的 JSON。
我仍然在let stats = ...
上收到以下错误
线程 5:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)
我刚刚在 *** 和任何地方查看了其他几篇帖子,但没有任何答案适合我的问题。
我需要获取许多变量(如 cash、lastUpdate、totalPartners 等)中的所有 JSON 字段值。
【问题讨论】:
您是否 100% 确定 jsonResults 具有键“Stats”的值?你确定结果是一个包含字典对象的数组吗? 使用!是有风险的 - 它说“这个值绝对是 String:Anyobject 的字典数组。我建议你删除 ! 并在最后添加一个 ?。然后你可以测试 stats 的值是否为 nil 并采取适当的措施跨度> 对于此类问题,您应始终提供 JSON 列表或其代表性示例。 【参考方案1】:您的 json 不是字典数组,它只是一个字典。
将 [[String: AnyObject]]
更改为 [String: AnyObject]
即可。
【讨论】:
以上是关于从 NSDictionary 访问数据的主要内容,如果未能解决你的问题,请参考以下文章
访问从 NSJSONSerialization 生成的 NSDictionary 中的 JSON 数据