繁体   English   中英

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

[英]How to read the value of childByAutoId() in swift 4?

我是iOS开发的新手,我使用childByAutoId()将大量数据存储到Firebase数据库中,在此之下存储用户名,photoURL,textMessage和用户UID。 我在tableView单元格中检索此数据。 现在我想要的是当我点击帖子或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)

}

我正在使用此代码来捕获单元格上的水龙头。 那么,什么代码可以帮助您在点击特定单元格后获得其子ID? 我想将其打印在日志中。

在此处输入图片说明

这是我的清单的样子。

如果要访问任何特定数据的键,则必须进行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
            }
    })
}

通过这种方式,您可以获得firebase的自动ID密钥。

但是更好的选择是创建一个模型并存储该密钥,同时解析来自firebase的数据。

每个单元格都有一个indexPath,其中包含有关其行和部分的信息:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    //Side note: the name of a user shouldn't be optional 
    let name = Auth.auth().currentUser?.displayName ?? ""
    let message = "You Selected " + name + " in cell number : " + \(indexPath.row) 

    let alertController = UIAlertController(title: "Trial", message: message, preferredStyle: .alert)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM