私は、ユーザーがバーコードをスキャンして書籍の情報を保存し、TableViewにそれらを取得できるようにするアプリケーションを構築しています。本は現在のユーザーID - >本 - >本の名前 - >タイトル、著者などの下に保管されます。下記のJSONの構造を参照してください - Firebase Swiftの異なるキーの下に保存されたデータを取り出す方法は?
だから別の名前と新しい本が、それは「ブック」の下に追加されますスキャンするたびにとブックがあります。すべての書籍のデータを別の名前で取得するにはどうすればよいですか?
ここで私は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
@Dravidianにお返事いただきありがとうございます。明らかに、エラーはありません。パスは正常に動作し、データを取得しています。しかし、私のJSON構造を見れば、各書籍のタイトルの下に書籍を保管しています。だから私はどのようにそれらの中のデータを取得するために各本を呼び出すか分からない。この場合、私は各本に固有の名前を持っています。 – Miki
たとえば、 'databaseRef.child( "users")。child((user?uid)!)。child( "books").child( "BOOK'S NAME")は、本の名前は異なります。 – Miki