【问题标题】:Could not cast value of type '__NSSingleObjectArrayI' to 'NSDictionary'无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”
【发布时间】:2016-12-13 09:31:28
【问题描述】:

我正在尝试使用 iTunes 查找 api 检查我的应用程序的版本。我在解析响应时遇到问题。请找代码

static func needsUpdate() -> Bool
{
    do {
        let infoDictionary = Bundle.main.infoDictionary
        let appID = infoDictionary?["CFBundleIdentifier"]
        let url:URL = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID!)")!
        let data = try Data(contentsOf: url)
        let lookup = try JSONSerialization.jsonObject(with:data, options: []) as! [String:AnyObject]

        print(lookup)

        let resultCount:Int = lookup["resultCount"] as! Int

        if (resultCount == 1)
        {
            var results = lookup["results"] as! [String:AnyObject]  // ***Error***

            if results.isEmpty
            {
                print(results)
            }
        }

    } catch
    {

    }
    return true
}

请告诉我如何解析此响应

【问题讨论】:

  • 设置断点检查lookup中的内容。

标签: ios json swift parsing


【解决方案1】:

错误消息清楚地表明results 的值是一个数组

let results = lookup["results"] as! [[String:Any]] 

考虑到 JSON 字典在 Swift 3 中是 [String:Any]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2016-01-12
    • 2017-03-17
    相关资源
    最近更新 更多