【问题标题】:Firebase Swift Could not cast value of type '__NSArrayM' (0x10591cc30) to 'NSDictionary'Firebase Swift 无法将“__NSArrayM”(0x10591cc30)类型的值转换为“NSDictionary”
【发布时间】:2016-10-20 01:24:31
【问题描述】:

我使用 Swift 和 Firebase 作为我的后端。出于某种原因,我在我的一张快照中遇到了这个错误:

Could not cast value of type '__NSArrayM' (0x10591cc30) to 'NSDictionary'

当我使用这段代码时,我得到了这个:

let snapVal = snapshot.value as! [String: AnyObject]

为什么只有这个数据快照会发生这种情况,而它看起来像所有其他数据快照?

数据如下:

Snap (PERSON) {
    1 =     {
        DESCRIPTION = "Brief description here..";
        "DOB" = "10/15/92, 8:29 PM";
        "STATUS" = 1;
        SONG = "A song";
        "START_DATE" = "10/05/16, 7:59 PM";
    };
}

snapVal 看起来像这样(当我没有将它指定为 [String: AnyObject] 时:

(
    "<null>",
        DESCRIPTION = "Brief description here..";
        "DOB" = "10/15/92, 8:29 PM";
        "STATUS" = 1;
        SONG = "A song";
        "START_DATE" = "10/05/16, 7:59 PM";
    }
)

为什么会这样?

【问题讨论】:

标签: ios swift firebase


【解决方案1】:
  • 确保您检索的数据属于 NSDictionary 类型

然后尝试更改:-

 let snapVal = snapshot.value as! [String: AnyObject]

到:-

 if let snapVal = snapshot.value as? [String: AnyObject]{

        print(snapVal)

      }

【讨论】:

  • 我试过了,它应该可以工作,但它永远不会执行,因为 snapshot.value 不能是 [String: AnyObject] 类型
【解决方案2】:

我遇到了同样的问题,我通过将子值从 0、1、2 等更改为字符串值(例如 p0、p1)解决了我的问题。当您仅使用 Int 时,Firebase 实际上并没有为该孩子保存标题值。如果这有意义的话。

因此,将 1 更改为“value1”或“v1”之类的值,然后使用 swift 用 array.sort { $1.status &gt; $0.status } 重新组织数组

Snap (PERSON) {
    1 =     {
        DESCRIPTION = "Brief description here..";
        "DOB" = "10/15/92, 8:29 PM";
        "STATUS" = 1;
        SONG = "A song";
        "START_DATE" = "10/05/16, 7:59 PM";
    };
}

收件人:

Snap (PERSON) {
    "value1" =     {
        DESCRIPTION = "Brief description here..";
        "DOB" = "10/15/92, 8:29 PM";
        "STATUS" = 1;
        SONG = "A song";
        "START_DATE" = "10/05/16, 7:59 PM";
    };
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多