0
現在、Firebaseデータベースの投稿をセルに表示するUITableViewがあります。私がログインしているユーザからの投稿のみを表示したいと思い、別のUITableViewもありユーザ名に基づいてFirebaseデータを表示
これは私が現在、私のUserPostViewControllerに持っているものである:ここでは
func loadData() {
let uid = FIRAuth.auth()?.currentUser?.uid
FIRDatabase.database().reference().child("posts").child(uid!).observeSingleEvent(of: .value, with: {
(snapshot) in
if let postsDictionary = snapshot.value as? [String: AnyObject] {
for post in postsDictionary {
self.userPosts.add(post.value)
}
self.userPostsTableView.reloadData()
}
})
}
// MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// pass any object as parameter, i.e. the tapped row
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return self.userPosts.count
}
// Displays posts in postsTableView
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "UserCell", for: indexPath) as! PostTableViewCell
// Configure the cell...
let post = self.userPosts[indexPath.row] as! [String: AnyObject]
cell.titleLabel.text = post["title"] as? String
cell.priceLabel.text = post["price"] as? String
if let imageName = post["image"] as? String {
let imageRef = FIRStorage.storage().reference().child("images/\(imageName)")
imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in if error == nil {
let image = UIImage(data: data!)
cell.titleLabel.alpha = 0
cell.contentTextView.alpha = 0
cell.postImageView.alpha = 0
UIView.animate(withDuration: 0.4, animations: {
cell.titleLabel.alpha = 1
cell.contentTextView.alpha = 1
cell.postImageView.alpha = 1
})
} else {
print("Error occured during image download: \(error?.localizedDescription)")
}
})
}
return cell
}
も私の写真ですFirebaseに意味:
私はあなたのアイデアを完全に理解していますが、私がデータベースにこれを実装していれば、UITableView内のすべての投稿を呼び出す方法はありません – gabe
これは正しいです。そのため、ユースケースごとにデータをモデル化するのはこのためです。しばしば、複数の場所でデータを複製することになります。これはNoSQLデータベースでは正常です。 –