首页 > 解决方案 > 在 Swift 中访问嵌套的 Firebase 数据

问题描述

我正在尝试基于 profile 访问嵌套数据值uid。有了这个基于uid有多个朋友的个人资料,并且朋友有位置和个人资料图像(在个人资料中)对象。我正在使用CodableFirebase和模型Friend,Profile,LastLocation。对于我使用的主要数据列表observeSingleEvent(of: .value和我需要使用的所有其他嵌套数据.observe(.childAdded

Firebase 数据库:

zzV6DQSXUyUkPHgENDbZ9EjXVBj2
         friends
         FTgzbZ9uWBTkiZK9kqLZaAIhEDv1
         conversationUid: "-L_w2yi8gh49GppDP3r5"

         friendStatus: "STATUS_ACCEPTED"

         notify: true

         phoneNumber: "+055441503"

         uid: "FTgzbZ9uWBTkiZK9kqLZaAIhEDv1"

         HHCBYyP4KybcINgZaWVukR967l12
         IcBfQKAnswQ7rivFuZsPvRUcsX43
         LEZ2FUxS1WVaqSEHx5YqnpZ5Els1
         YyFIm4hTorMFq4olpvHJI7e5e3a2
         nkS2cjSvmLUEYEKsAVyErz9HkrJ2
         lastLocation
         batteryStatus: 27

         latitude: 41.0220811

         longitude: 29.0445012

         timeStamp: 1571742057730

         uid: "zzV6DQSXUyUkPHgENDbZ9EjXVBj2"

         profile
         fcmToken: "enMneewiGgg:APA91bHyA4HypWUYhxGTUTTcWch8ZJ_6UUW..."

         name: “My Profile name”

         phoneNumber: "+05588674"

         picture: "profile/zzV6DQSXUyUkPHgENDbZ9EjXVBj2/a995c7f3-7..."

         uid: "zzV6DQSXUyUkPHgENDbZ9EjXVBj2"

代码:

let ref = Database.database().reference()

        ref.child("users").child("zzV6DQSXUyUkPHgENDbZ9EjXVBj2").observeSingleEvent(of: .value, with: { (snapshot) in

            for userSnapshot in snapshot.children.allObjects as! [DataSnapshot] {
                let friendsSnapshot = userSnapshot.childrenCount

                do {
                    let frndList = try FirebaseDecoder().decode(Friend.self, from: friendsSnapshot)
                    self.AppData = [frndList]
                    print(frndList)
                    self.tableView.reloadData()
                } catch let error {
                    print(error)
                }

标签: iosjsonswiftfirebase

解决方案


推荐阅读