2017-08-07 43 views
0

我建立一個應用程序,允許用戶掃描條形碼和商店的圖書信息,並檢索他們到一個TableView中。這些書籍存儲在當前用戶ID - >書籍 - >書名 - >標題,作者..等等。見下面的JSON結構: -如何檢索Firebase Swift中不同密鑰下存儲的數據?

JSON Data Structure

因此,有書有不同的名稱,每一個新的書被掃描時,它會在「圖書」補時。

我如何獲得的所有書籍的數據以不同的名字?

下面的代碼,在這裏我想在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() 
     } 
    })  
} 
+0

哪裏錯誤?嘗試打印'databaseRef.child(「users」)。child((user?.uid)!)。child(「books」)',你會得到想要的路徑嗎? – Dravidian

+0

感謝您回覆@Dravidian。顯然,沒有任何錯誤。路徑工作正常,我正在獲取數據。但是,如果您看到我的JSON結構,我將書籍存儲在每本書的標題下。所以我不確定如何調用每本書來檢索其中的數據。在這種情況下,每本書都有一個唯一的名稱。 – Miki

+0

例如,我不能這樣做: 'databaseRef.child( 「用戶」)子(?!(用戶.uid))子( 「書」).child( 「書的NAME」)',因爲書的名字各不相同。 – Miki

回答

0

嘗試使用這樣的: -

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 

    }) 
+0

謝謝@Dravidian。沒有任何打印聲明起作用。但是,我打印出「每個」就在IF語句之前,我得到這樣的:'快(臨牀醫學牛津手冊){ 作者=「穆雷朗莫爾」; comments =「在這裏添加文本...」; isbn = 9780199609628; publisher =「牛津大學出版社」; title =「牛津臨牀醫學手冊」; } 快照(編程面試攻略:祕密登陸你的下一個工作){ 作者=「諾亞Suojanen和Eric Giguere約翰·蒙根」; comments =「在這裏添加文本...」; isbn = 9788126512744; ' ......等等 – Miki

+0

回答更新... – Dravidian

+0

作品!謝謝! @Dravidian – Miki

相關問題