无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”

Posted

技术标签:

【中文标题】无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”【英文标题】:Could not cast value of type '__NSSingleObjectArrayI' to '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中的内容。 【参考方案1】:

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

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

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

【讨论】:

以上是关于无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”的主要内容,如果未能解决你的问题,请参考以下文章