请求结果结构firebasedatabase Swift

请求结果结构firebasedatabase Swift,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,为了像在java中一样从管理单元swift中检索自定义类的值,我使用Firebasedecoder。 工作很好,但我需要以下结构 { username = uiii; email = test@rom.com ..} 如果我发出像.queryOrderedByCHild:email.queryEquaLuii这样的有序请求,我将使用前一个节点获得重新请求: { "hjhj"= { username = uiii; email = test@rom.com ..} }

为了像在java中一样从管理单元swift中检索自定义类的值,我使用Firebasedecoder。 工作很好,但我需要以下结构

{

username = uiii;
email = test@rom.com

..}
如果我发出像.queryOrderedByCHild:email.queryEquaLuii这样的有序请求,我将使用前一个节点获得重新请求:

{

"hjhj"= {
username = uiii;
email = test@rom.com

..} }

正在寻找删除不必要值或具有正确快照结构的方法。

对Firebase数据库执行查询时,可能会出现多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表

要访问结果中的各个节点,需要循环snapshot.children,如上的Firebase文档所示

另见:

以前关于 如果希望仅接收单个子节点且仅接收一次,请选择此选项
具有图片中所有值的自定义类用户

进口基础 导入快捷键 进口火基 导入CodableFirebase

//了解用户ID,使用Firebasedecoder清理漂亮的结果

func cleanResultWithCodebableFirebase{

      ref.child("3oleg").observeSingleEvent(of: .value, with: { snapshot in
           guard let value = snapshot.value else { return }
           do {
               let user = try FirebaseDecoder().decode(User.self, from: value)
               print(user.getUser_id())
               
           } catch let error {
               print(error)
           }
       })
}

不知道用户标识脏结果

func customwithdirtylist{

让query=ref.queryOrderedbyChild:Strings.field\u username.queryQualtOvalue:uiiii query.observeSingleEvent 的:。值,在中使用:{snapshot->Void

   for child in snapshot.children {

     let childSnapshot = snapshot.childSnapshot(forPath: (child as AnyObject).key)

     for grandchild in childSnapshot.children{
         let grandchildSnapshot = childSnapshot.childSnapshot(forPath: (grandchild as AnyObject).key)
         //possible from here to get the key and values of each element of the custom class

         
     }
     

   }
}

}


这是我在两种情况下使用的代码,无论是直接请求还是订购。在firebase decode的帮助下直接显示时没有列表。通过循环重建自定义类的丑陋方式。我确信有更优雅的方法可以做到这一点,特别是当我只需要删除直接结果的一个值就可以得到一个干净的结果时。简言之,如果您在同一级别有额外的数据,这会导致decodeFirebase崩溃,您仍然可以使用它:

let value = snapshot.value 
let modifiedValue:NSMutableDictionary = (value as AnyObject).mutableCopy() as! MutableDictionary
然后可以按键:modifiedValue.removeObjectforKey:test删除元素
然后应用解码。

我只有一个计划的结果。问题是我无法处理结果的结构。我试图像这样循环,但我得到的错误是nsemulator.element没有值。。。这更像是我不知道如何处理的数据结构,而不是结果本身。无论您计划了多少个结果,如果您使用的是查询,结果都是一个列表,您需要在子项上循环。如果您很难让链接中的代码正常工作,请编辑您的问题,因为它下面有一个链接可以显示。完全没有理由使用NSMutable。。。Swift中的集合类型。@vadaian:我甚至会说:没有理由不使用NSMutable…请您再给UPVOLTER或检查员一句评论,正如您所看到的,我忘了感谢您对我的审查,我的坏朋友