【问题标题】:How to retrieve data stored under different key in Firebase Swift?如何检索存储在 Firebase Swift 中不同键下的数据?
【发布时间】:2017-08-07 11:28:39
【问题描述】:

我正在构建一个应用程序,允许用户扫描条形码并存储书籍信息并将它们检索到 TableView 上。书籍存储在当前用户 ID -> 书籍 -> 书籍名称 -> 标题、作者 ..etc 下。请参阅下面的 JSON 结构:-

因此,有不同名称的书籍,每次扫描新书时,都会将其添加到“书籍”下。

如何获取不同名称下所有书籍的数据?

这是代码,我试图在 TableViewController 中检索数据:

var posts = [BooksFromFirebase]()

override func viewDidLoad() {
    super.viewDidLoad()

    //get reference to data location
    let databaseRef = Database.database().reference()

    //get current user id
    let user = Auth.auth().currentUser

   databaseRef.child("users").child((user?.uid)!).child("books").observe(.value, with: { (snapshot) in

        if let value = snapshot.value as? [String: AnyObject]{
        let assetTitle = value["title"] as? String ?? ""
        print("Title ",assetTitle)
        let title = assetTitle
        let type = "Book"

        self.posts.insert(BooksFromFirebase(title: title, type: type), at: 0)
        self.tableView.reloadData()
        }
    })     
}

【问题讨论】:

  • 错误在哪里?试试打印databaseRef.child("users").child((user?.uid)!).child("books"),得到想要的路径了吗?
  • 感谢您回复@Dravidian。显然,没有任何错误。路径工作正常,我正在获取数据。但是,如果您看到我的 JSON 结构,我会在每本书的标题下存储书籍。所以我不确定如何调用每本书来检索其中的数据。在这种情况下,每本书我都有一个唯一的名称。
  • 例如,我不能这样做:'databaseRef.child("users").child((user?.uid)!).child("books"‌​).child(" BOOK'S NAME")' 因为书名不同。

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

尝试使用这个:-

    Database.database().reference().child("users/(user!.uid)/books").observeSingleEvent(of: .value, with: {(Snapshot) in


            if let eachDict = Snapshot.value as? NSDictionary{

                for each in eachDict{

                    print(each.key ?? "No Data")
                    print(each.value ?? "No Data")
                    print((each.value as! NSDictionary)["title"] ?? "No data")

                }
            }

    }, withCancel: {(Err) in

        // Handle error encountered while communicating via firebase

    })

【讨论】:

  • 谢谢@Dravidian。打印语句都不起作用。但是我在 IF 语句之前打印了“每个”,我得到了这个:Snap (Oxford handbook of clinical medicine) { author = "Murray Longmore"; comments = "Add texts here..."; isbn = 9780199609628; publisher = "Oxford University Press"; title = "Oxford handbook of clinical medicine"; } Snap (Programming Interviews Exposed: Secrets to Landing Your Next Job) { author = "Noah Suojanen and Eric Giguere John Mongan"; comments = "Add texts here..."; isbn = 9788126512744; ......等等
  • 有效!谢谢! @Dravidian
猜你喜欢
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
相关资源
最近更新 更多