【问题标题】:Could not cast value of type '__NSSingleEntryDictionaryI' (0x10d249f78) to 'NSArray'无法将“__NSSingleEntryDictionaryI”(0x10d249f78)类型的值转换为“NSArray”
【发布时间】:2018-06-28 15:25:25
【问题描述】:

这是我的代码:

if let responseDic = response as? Dictionary<String, AnyObject>
                {
                    var temp = Array<Store>.init()

                    var dataDic = responseDic["data"] as? Dictionary<String, AnyObject>
                    if dataDic != nil {

                        for storeList in dataDic!["stores"] as! NSArray {
                                if let store = storeList as? Dictionary<String, AnyObject>
                                {
                                    temp.append((Store(dictionary: store)))
                                }
                            }
                    }

我收到崩溃错误:无法将类型“__NSSingleEntryDictionaryI”(0x10d249f78)的值转换为“NSArray”(0x10d24b008)。对于这一行:for storeList in dataDic!["stores"] as! NSArray

这是我的回复结构:

{
  "data": {
    "stores": {
      "items": [
        {...}]
}
}

【问题讨论】:

  • 这意味着dataDic!["stores"]实际上是Dictionary,而不是Array。您误解了回复的结构。

标签: arrays swift dictionary crash nsarray


【解决方案1】:

你需要转换这个

for storeList in dataDic!["stores"] as! NSArray

到

if let dic = dataDic!["stores"] as? [String:Any] {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2017-12-08
    • 2015-08-29
    • 2020-03-26
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多