ios - 如何在 Firebase 中循环访问 AutoIdChilds?

标签 ios firebase swift3 firebase-realtime-database

我有一个类似 Twitter 的社交应用程序,当用户寻找另一个用户时,我想看看登录用户是否关注另一个用户,但我不知道如何遍历并找出登录用户是否已经关注了另一个。

{
  "follower" : {
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "-KbHXdeiOfGXzvavuQ_5" : {
        "uid" : "dEXaVLDOSPfJa3zTyUNqAEtVuMR2"
      }
    }
  },
  "following" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "-KbHXdehbkeMvDyzNpRE" : {
        "uid" : "mt0fzirhMhazIcy90MRWuRpTfmE2"
      }
    }
  },
  "handles" : {
    "jcadmin" : "mt0fzirhMhazIcy90MRWuRpTfmE2",
    "jcbest" : "dEXaVLDOSPfJa3zTyUNqAEtVuMR2"
  },
  "user_profiles" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "about" : "Hello world",
      "handle" : "jcbest",
      "name" : "Juan Carlos Estevez Rodriguez",
      "profile_pic" : "https://firebasestorage.googleapis.com/v0/b..."
    },
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "about" : "Hello",
      "handle" : "jcadmin",
      "name" : "Juan Carlos",
      "profile_pic" : "https://firebasestorage.googleapis.com/v0..."
    }
  }
}

这是我的数据库,我想要的是这样的

   self.databaseRef.child("following").child((self.loggedInUser?.uid)!).observe(.value, with: { (snapshot) in
        let snapshot = snapshot.value as? [String: AnyObject]

        if("The other user UID exists in the following")
        {
            self.followButton.tittleLabel = "Unfollow"
        }

    })

最佳答案

你不需要$autoId,你可以只使用follower/following user的$uid作为key。

"follower" : {
  "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2": true
  }
},
"following" : {
  "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
    "mt0fzirhMhazIcy90MRWuRpTfmE2": true
  }
},

然后可以观察/following/$uid/$userId的值,切换快照值来判断是Bool等于true还是只是

let uid = FIRAuth.auth()!.currentUser!.uid
let ref = FIRDatabase.database().reference(
    withPath: "following/\(uid)/$userId"
)

ref.observe(.value, with: { (snapshot) in
    switch snapshot.value {
    case let value as Bool where value:
        // value was a Bool and equal to true
        self.followButton.tittleLabel = "Unfollow"
    default:
        // value was either null, false or could not be cast
        self.followButton.tittleLabel = "Follow"
    }
})

关于ios - 如何在 Firebase 中循环访问 AutoIdChilds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840163/

相关文章:

使用 AVFoundation 和 Swift 的 iOS 多 channel 音频

ios - Apple Wallet NFC 加密公钥

ios - 如何在设置 swift 3.0 时从我自己的应用程序重定向到“设置常规”选项卡

ios - 如何缩放 FSCalendar 的高度?

javascript - 如何确定 Firebase 身份验证中的用户是新创建的还是现有用户?

ios - 解析实时查询 cocoapods 和 Swift 3

ios - 是否可以获取与键盘关联的文本字段?

ios - 如何将带有 subview 的 UIImageView 保存到相机胶卷?

android - 回收 View 仅显示 1 个元素

android - Facebook 的 FirebaseUI 身份验证不起作用