无法将“__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”的主要内容,如果未能解决你的问题,请参考以下文章

无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS

无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV

无法将 ReactiveUI 添加到 NUnit 测试项目

“无法将图像数据写入路径” - Laravel 图像干预