Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase Swift无法转换类型为'__NSArrayM';(0x10591cc30)至';NSDictionary';_Ios_Swift_Firebase - Fatal编程技术网

Ios Firebase Swift无法转换类型为'__NSArrayM';(0x10591cc30)至';NSDictionary';

Ios Firebase Swift无法转换类型为'__NSArrayM';(0x10591cc30)至';NSDictionary';,ios,swift,firebase,Ios,Swift,Firebase,我正在使用带有Firebase的Swift作为后端。出于某种原因,我在一个快照中遇到此错误: Could not cast value of type '__NSArrayM' (0x10591cc30) to 'NSDictionary' 当我使用此代码时,我会得到: let snapVal = snapshot.value as! [String: AnyObject] 为什么只有这个数据快照会发生这种情况,而它看起来与所有其他数据快照一样 数据如下所示: Snap (PERSON) {

我正在使用带有Firebase的Swift作为后端。出于某种原因,我在一个快照中遇到此错误:

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";
    }
)
(
"",
DESCRIPTION=“此处简要说明…”;
“DOB”=“1992年10月15日,晚上8:29”;
“状态”=1;
SONG=“一首歌”;
“开始日期”=“2016年5月10日,下午7:59”;
}
)
为什么会这样?

  • 确保您正在检索的数据类型为NSDictionary
然后尝试改变:-

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

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

        print(snapVal)

      }
  • 确保您正在检索的数据类型为NSDictionary
然后尝试改变:-

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

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

        print(snapVal)

      }

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

因此,将1更改为类似“value1”或“v1”的值,并使用swift使用
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";
    };
}
至:

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";
    };
}

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

因此,将1更改为类似“value1”或“v1”的值,并使用swift使用
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";
    };
}
至:

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";
    };
}

因为
snapshot.value
是一个数组,而不是一个字典。@Ryan检查这个答案@Ryan用你的检索函数更新你的问题。因为
snapshot.value
是一个数组,而不是一个字典。@Ryan检查这个答案@Ryan用你的检索函数更新你的问题。我试过了,它应该可以工作,但从未执行过因为snapshot.value不能是[String:AnyObject]类型,所以我尝试过,它应该可以工作,但从未执行过,因为snapshot.value不能是[String:AnyObject]类型