- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经研究了好几天了,但找不到解决方案。我使用 firebase 数据库作为我的应用程序的后端。如何使用唯一的用户 ID 来读取特定的用户数据?我有一个用户列表,每个用户都有自己的数据,现在的问题是,当我选择其中一个用户时,我会看到所有用户的数据,而不仅仅是我选择的用户。我希望能够通过从 TableView 中选择来查看每个用户数据。有什么帮助吗?
import UIKit
import Firebase
import FirebaseDatabase
class detailsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
//connecting table view
@IBOutlet weak var tableViewCards: UITableView!
// defining firebase reference var
var ref: DatabaseReference!
// list to store card details
var cardList = [CardModel]()
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cardList.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// creating a cell using the custom class
let cell = tableViewCards.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell
// the card object
let card: CardModel
//getting the name
card = cardList[indexPath.row]
//adding values to labels
cell.labelName.text = card.name
cell.labelCompanyName.text = card.company
cell.labelRole.text = card.role
cell.labelMobile.text = card.mobile
cell.labelPhone.text = card.telephone
cell.labelEmail.text = card.email
cell.labelAddress.text = card.address
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// getting a reference to the database
ref = Database.database().reference()
// observing data changes
ref.observe(DataEventType.value, with: {(snapshot) in
// if the reference has values
if snapshot.childrenCount > 0 {
//clearing the list
self.cardList.removeAll()
//iterating through all the values
for cards in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let cardObject = cards.value as? [String: AnyObject]
let personName = cardObject?["name"]
let cardId = cardObject?["id"]
let companyName = cardObject?["company"]
let roleName = cardObject?["role"]
let mobileNo = cardObject?["mobile"]
let phoneNo = cardObject?["telephone"]
let emailAdd = cardObject?["email"]
let compAdd = cardObject?["address"]
//creating card object with model and values
let card = CardModel(id: cardId as! String?, name: personName as! String?, company: companyName as! String?, role: roleName as! String?, mobile: mobileNo as! String?, telephone: phoneNo as! String?, email: emailAdd as! String?, address: compAdd as! String?)
//appending it to the list
self.cardList.append(card)
}
//reloading to the tableView
self.tableViewCards.reloadData()
}
})
}
}
数据库结构:
{
"-LOGJARYHpNDqiReJGP3" : {
"address" : "10 test st test ",
"company" : "grated",
"email" : "test@email.com",
"id" : "-LOGJARYHpNDqiReJGP3",
"mobile" : "0412345678",
"name" : "Jason",
"role" : "engineer",
"telephone" : "02999999"
}
}
最佳答案
由于您没有指定 Firebase 数据库的结构,因此无法为您提供确切的代码。
但是您需要进行更改:
ref = Database.database().reference()
当用户登录时,您可以通过 Auth 类访问应用程序中的 uid。
ref = Database.database().reference().child("Users").child(user.uid)
既然您已将所有内容放入根节点,您可以尝试:
ref = Database.database().reference().child(user.uid)
您需要查看您的数据库,将数据分离到其他节点,否则稍后安全性将成为您的问题。
关于ios - Swift:如何在firebase中根据用户id读取特定用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732842/
出现在 python 2.7.8 中。 3.4.1 不会发生这种情况。 示例: >>> id(id) 140117478913736 >>> id(id) 140117478913736 >>> id
好吧,我对动态创建的控件的 ID 很困惑。 Public Class TestClass Inherits Panel Implements INamingContainer
我收到下面的错误,说有堆栈溢出。发生这种情况是因为带有 IN (id, id, id...id) 的 SQL 语句有大量参数。有没有什么办法解决这一问题?这是在我使用 Eclipse 的本地环境中发生
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
为什么 CPython(对其他 Python 实现一无所知)有以下行为? tuple1 = () tuple2 = ()
非常简单的问题:当我有一个持久对象时,它通常有一个名为 ID 的属性(对于抽象类)。 那么..命名约定是ID还是Id? 例如。 public int ID { get; set; } 或 public
知道为什么我会收到此错误,我已经尝试了所有命名约定(小写/大写) 我正在使用 Vaadin,这是我的代码片段: public class Usercontainer extends BeanI
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
我需要改变表的所有主键 UPDATE TODO SET id = id + 1 但我做不到(Demo 来自 Ahmad Al-Mutawa 的回答)描述了原因。主键不能这样改。 我也不能根据这是 sq
我正在尝试列出与用户相关的讨论列表。 想象一下,如果你愿意的话: posts -------------------------------------------------------------
我有一个表,其中包含一些具有自己的 ID 和共享 SKU key 的文章。我尝试使用左连接进行查询,并使用组结果获取从查询返回的所有 id。 我的数据结构是这样的: id - name -
在下表People中: id name 1 James 2 Yun 3 Ethan 如果我想找到最大 ID,我可以运行此查询 select max(id) id from People; 结果是
我正在产品页面上创建评论模块,其中显示垃圾评论选项,并显示 onclick 显示和隐藏弹出窗口。现在它在单个评论中工作正常但是当评论是两个时它同时打开两个因为类是相同的。现在这就是为什么我想要获取父
根据 REST 哲学,PUT操作应该(取自维基百科): PUT http://example.com/resources/142 Update the address member of the co
我想知道如何在使用 PHP 或 JavaScript 进行身份验证后从 Google Analytics 获取 Property Id、View Id 和 Account Id?因为我希望能够将它们存
我想使用所选按钮的 ID 进行删除。但我不知道如何从中获取/获取 id。我尝试了 this.id 但不起作用。 这是我创建按钮的地方: var deleteEmployer= document.cre
我有一个具有以下结构的表“表” ID LinkedWith 12 13 13 12 14 13 15 14 16
请不要在未阅读问题的情况下将问题标记为重复。我确实发布了一个类似的问题,但 STACKOVERFLOW 社区成员要求我单独重新发布修改后的问题,因为考虑到一个小而微妙的修改,解决方案要复杂得多。 假设
在 Android Studio 中,我创建了一个 Person.java 类。我使用Generate 创建了getter 和setter 以及构造函数。 这是我的 Person.java 类: pu
如何在 jQuery 中制作这样的东西: //这是显示的主体 ID //当我悬停 #hover-id 时,我希望 #principal-id 消失并更改 。但是当我将光标放在 #this-id 上时
我是一名优秀的程序员,十分优秀!