首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Swift 2错误分析JSON数据

用Swift 2错误分析JSON数据
EN

Stack Overflow用户
提问于 2015-12-03 17:08:34
回答 1查看 36关注 0票数 0

我正在使用一个iOS应用程序(使用Swift2),我遇到了一些问题,包括应用程序中的JSON数据。对于“注册”,我使用的是移动号码验证(比如whatsapp),所以当我使用以下JSON数据(http://data.okfn.org/data/core/country-codes/r/country-codes.json)在tableView中显示国家和每个国家的拨号代码时,它会显示一个错误。

我在写这段代码:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    let urlPath = "http://data.okfn.org/data/core/country-codes/r/country-codes.json"
    let url = NSURL(string: urlPath)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
        if (error != nil) {
            print(error)
        } else {
            do {
                let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)
                print(jsonResult["name"])
            } catch _ {}
        }
    })
    task.resume()
}

}

调试区域显示如下:

代码语言:javascript
复制
    {
    DS = AL;
    Dial = 355;
    FIFA = ALB;
    FIPS = AL;
    GAUL = 3;
    IOC = ALB;
    "ISO3166-1-Alpha-2" = AL;
    "ISO3166-1-Alpha-3" = ALB;
    "ISO3166-1-numeric" = 008;
    ITU = ALB;
    MARC = aa;
    WMO = AB;
    "currency_alphabetic_code" = ALL;
    "currency_country_name" = ALBANIA;
    "currency_minor_unit" = 2;
    "currency_name" = Lek;
    "currency_numeric_code" = 008;
    "is_independent" = Yes;
    name = Albania;
    "name_fr" = Albanie;
},

那么,还有其他方法可以访问国家的名称和拨号代码吗?我不知道为什么它显示了一个错误/零

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-03 17:17:05

jsonResult是一组字典。无法通过键订阅数组,这将导致错误。

替换do - catch部件的代码打印所有国家的名称和拨号代码。字典类型甚至可以被限制为[String:String]

代码语言:javascript
复制
do {
   let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [[String:String]]
   for country in jsonResult {
      print(country["name"]!, country["Dial"]!)
   }
} catch let error as NSError { print(error) }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34072066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档