質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1709閲覧

[swift] FirebaseでtableViewにユーザーの一覧を表示させたい

Kaguya_4869

総合スコア116

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/04/05 11:52

編集2022/01/12 10:55

#質問したいこと
お世話になっております。
現在、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}

#やってみたこと
こちらのページを参考に作ってみました。
しかしながら理解が薄いところがあり、他にも色々なホームページを見てみましたが、自力で解決するに至りませんでした。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/06 12:43

viewWillAppear内のprint(appUser.userName)の結果はどうなってますか?
Kaguya_4869

2020/04/06 12:58

匿名となっています。 しかし、ユーザーには名前をつけているので匿名となってしまっている部分もなおしたいです。
退会済みユーザー

退会済みユーザー

2020/04/06 13:11

は? tableViewに一覧表示ということならば、 var appUsers = [AppUser]() という感じの配列のようなものがあって、 cellForRowAtの中で let userName: String = appUsers[IndexPath.row].userName という感じで取り出すのが常道だと思いますが。 //cell.textLabel?.text = postArray[indexPath.row].userName コメントアウトしてある部分がそれにあたると思います。
Kaguya_4869

2020/04/07 09:00

返信ありがとうございます。 tyobigorouさんが示してくださった方法をもとにセルの内容が匿名というようになりました。 基本的なことでしたのに気付けなかったのが愚鈍でした。 気づかせてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問