IOS Firebase:循环快照中的所有键。值得到凌乱的位置

Posted

技术标签:

【中文标题】IOS Firebase:循环快照中的所有键。值得到凌乱的位置【英文标题】:IOS Firebase: Loop all key in snapshot.value get messy position 【发布时间】:2016-04-20 04:56:45 【问题描述】:

我收到来自 Firebase 服务器的快照,如下面的日志所示。现在我想循环快照中的所有键,但我的位置很乱。

我不知道为什么会这样。任何帮助将不胜感激

这是打印日志的代码

NSLog(@"snapshot = %@",snapshot.value);
for (NSString *keyPath in snapshot.value) 
     NSLog(@"keyPath = %@",keyPath);

这是日志

2016-04-20 11:48:04.177 EarCrush[5241:79090] snapshot = 
    "-KFlrXzqsSa50GVnJkqk" =     
        conversationID = "2886-2377";
        text = Okteh;
        time = "20-04-2016 11:12";
    ;
    "-KFlrgrvdR_uj2o1ltaw" =     
        conversationID = "2886-2377";
        text = "How are you determining";
        time = "20-04-2016 11:12";
    ;
    "-KFlrhSBbVnx4XyWjQPy" =     
        conversationID = "2886-2377";
        text = "Message 2 ..... ";
        time = "20-04-2016 11:12";
    ;
    "-KFlrhzx0TK5CeSR3aAA" =     
        conversationID = "2886-2377";
        text = "Message 3: Hello world ";
        time = "20-04-2016 11:12";
    ;

2016-04-20 11:48:04.177 EarCrush[5241:79090] keyPath = -KFlrhzx0TK5CeSR3aAA
2016-04-20 11:48:04.178 EarCrush[5241:79090] keyPath = -KFlrhSBbVnx4XyWjQPy
2016-04-20 11:48:04.179 EarCrush[5241:79090] keyPath = -KFlrXzqsSa50GVnJkqk
2016-04-20 11:48:04.179 EarCrush[5241:79090] keyPath = -KFlrgrvdR_uj2o1ltaw

Firebase 服务器映像

【问题讨论】:

【参考方案1】:

当您打印 FDataSnapshot 时,它会打印 JSON 结构。由于 JSON 没有定义子节点的顺序,因此它们的显示顺序是不确定的(尽管它经常会在您到达此处时按照它们键的字典顺序打印子节点)。

Firebase's queries 可用于按特定顺序获取数据。例如来自this question:

[[languagesRef queryOrderedByChild:@"distance"] observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) 

    for ( FDataSnapshot *child in snapshot.children) 

        NSLog(@"child.key = %@",child.key);

    

Firebase 快照包含有关子数据排序的其他信息,在您打印该快照时不会显示这些信息。当您遍历快照的子节点时,此排序信息用于确保上述循环中的正确顺序。

【讨论】:

以上是关于IOS Firebase:循环快照中的所有键。值得到凌乱的位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 遍历 Firebase 中的嵌套快照子项

迭代 Firebase 中的子快照

iOS 应用程序中的 Firebase Crashlytics 无法正常工作

查询未知父firebase的子快照

swift - Firebase 数据库快照检索。

Firebase 实时数据库中的子键问题仅在发布版本中