#質問したいこと
お世話になっております。
現在、Firebaseを使ったアプリを作っているのですが1つのグループに入っているユーザーの一覧をtableViewに表示させたいと思っています。
Firebaseにて、ユーザーのuidを取得することはできたのですが、その後どのようにしてtableViewにユーザー名を表示すればいいのかわかりません。
#コード
swift
1//tableViewに表示するところ(ViewController) 2 let userID = Auth.auth().currentUser!.uid 3 var database: Firestore! 4 var students: AppUser! 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 database = Firestore.firestore() 8 9 if Auth.auth().currentUser != nil { 10 database.collection("users").document(userID).getDocument { (snapshot, error) in 11 if error == nil, let snapshot = snapshot, let data = snapshot.data() { 12 self.students = AppUser(data: data) 13 print(self.userID)//ユーザーのuidが出力される 14 } 15 } 16 } 17 } 18 override func viewWillAppear(_ animated: Bool) { 19 super.viewWillAppear(animated) 20 database.collection("users").document(userID).setData( 21 ["userID": userID], merge: true) 22 database.collection("users").document(userID).getDocument { (snapshot, error) in 23 if error == nil, let snapshot = snapshot, let data = snapshot.data() { 24 self.students = AppUser(data: data) 25 let appUser = AppUser(data: data) 26 print(appUser.userName) 27 } 28 } 29 tableView.reloadData() 30 31 } 32func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 33 return 10 34 } 35 36 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 37 let cell = tableView.dequeueReusableCell(withIdentifier: "GroupDetailCell")! 38// cell.textLabel?.text = postArray[indexPath.row].userName 39 database.collection("users").document(userID).getDocument { (snapshot, error) in 40 if error == nil, let snapshot = snapshot, let data = snapshot.data() { 41 let appUser = AppUser(data: data) 42 cell.textLabel?.text = self.userID//tableViewに表示されない 43 } 44 } 45 return cell 46 }
swift
1//AppUser.swift 2import Foundation 3import Firebase 4 5struct AppUser { 6 let userID: String 7 let userName: String 8 9 init(data: [String: Any]) { 10 userID = data["userID"] as! String //FirebaseのユーザーID 11 userName = data["userName"] as? String ?? "匿名"//Username 12 } 13}
#やってみたこと
こちらのページを参考に作ってみました。
しかしながら理解が薄いところがあり、他にも色々なホームページを見てみましたが、自力で解決するに至りませんでした。
よろしくお願いします。
あなたの回答
tips
プレビュー