我使用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";
}
)
为什么会这样?
答案 0 :(得分:0)
然后尝试更改: -
let snapVal = snapshot.value as! [String: AnyObject]
要: -
if let snapVal = snapshot.value as? [String: AnyObject]{
print(snapVal)
}
答案 1 :(得分:0)
我有同样的问题,我通过将子值从0,1,2等更改为字符串值(如p0,p1)来解决我的问题。当您仅使用Int时,Firebase实际上不会为该子项保存标题值。如果这是有道理的。
因此,将1更改为“value1”或“v1”,并使用swift重新组织数组event.stopPropagation()
array.sort { $1.status > $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";
};
}