如何在swift 4中读取childByAutoId()的值?

Kau*_*tti -1 uitableview ios swift firebase-realtime-database

我是iOS开发的新手,我通过使用childByAutoId()将一大块数据存储到firebase数据库,在此下面存储用户名,photoURL,textMessage和用户UID.我正在tableView Cells中检索这些数据.现在我想要的是当我点击其中一个帖子或tableView单元格时,我想打印由childByAutoId()函数生成的唯一ID.这该怎么做.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let name = Auth.auth().currentUser?.displayName

    let indexPath = tableView.indexPathForSelectedRow

    let alertController = UIAlertController(title: "Trial", message: "You Selected "+name!, preferredStyle: .alert)

    let defaultAction = UIAlertAction(title: "Close Alert", style: .default, handler: nil)
    alertController.addAction(defaultAction)

    present(alertController, animated: true, completion: nil)

}
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码来捕获单元格上的点击.那么什么代码有助于在点击后获取该特定单元格的子ID?我想在日志中打印它.

在此输入图像描述

这就是我的列表的样子.

Rah*_*lid 5

如果要访问任何特定数据的密钥,则必须进行firebase查询.我相信您有一些独特的价值来识别您的数据.

为了获取唯一键,您可以使用此func:

func getUniqueFirebaseKey(){
    let ref = Database.database().reference()
    ref.child("CHILD_NAME")
    .queryEqual(toValue: "UNIQUE_ID")
    .observe(.value, with: { (snapshot: DataSnapshot) in`

        if let snap = snapShot.value as? [String:Any] {

            for key in snap.keys{
                return key
            }
    })
}
Run Code Online (Sandbox Code Playgroud)

通过此,您可以获取firebase的自动ID密钥.

但更好的选择是在从firebase解析数据时创建模型并存储该密钥.