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

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

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

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

TableView

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

Swift

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

Q&A

0回答

1671閲覧

firestoreから部分一致した情報をtableviewに表示させたい。

Ogikubo

総合スコア1

Firebase

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

TableView

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

Swift

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

0グッド

0クリップ

投稿2021/01/07 13:46

前提・実現したいこと

firestoreのドキュメント内のmusicNameフィールドの情報とsearchBarの文字が部分一致しているデータをtableViewに表示したい。

初心者で説明が不十分かもしれませんが、ご回答よろしくお願い致します。

発生している問題・エラーメッセージ

whereField("musicName", arrayContains: seachBar.text!).getDocumentと書いたが取得できない。

該当のソースコード

swift

1func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 2 3 if searchBar.text == "" { 4 showAllData() 5 }else{ 6 self.timeLines.removeAll() 7 timeLineRef.whereField("musicName", arrayContains: seachBar.text!).getDocuments { (querySnapshot, error) in 8 if error != nil{ 9 return 10 }else{ 11 self.seachedtimeLines = querySnapshot!.documents.map { document in 12 let data = TimeLineModel(document: document) 13 14 return data 15 } 16 } 17 } 18 self.tableView.reloadData() 19 } 20 21 } 22 23 24 override func viewWillAppear(_ animated: Bool) { 25 super.viewWillAppear(animated) 26 27 showAllData() 28 } 29 30 func showAllData() { 31 timeLineRef.getDocuments { (querySnapshot,error) in 32 self.timeLines.removeAll() 33 34 if error != nil { 35 return 36 } 37 self.timeLines = querySnapshot!.documents.map { document in 38 let data = TimeLineModel(document: document) 39 self.timeLines.insert(data, at: 0) 40 return data 41 } 42 } 43 self.tableView.reloadData() 44 } 45 46 47 // MARK: - Table view data source 48 override func numberOfSections(in tableView: UITableView) -> Int { 49 return 1 50 } 51 52 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 53 if self.seachBar.text == "" { 54 return timeLines.count 55 }else{ 56 return seachedtimeLines.count 57 } 58 59 } 60 61 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 62 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TimeLineCell 63 if seachBar.text == "" { 64 cell.timeLineModel = self.timeLines[indexPath.row] 65 }else{ 66 cell.timeLineModel = self.seachedtimeLines[indexPath.row] 67 } 68 return cell 69 } 70 71 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 72 73 let selectedCell = tableView.cellForRow(at: indexPath) 74 75 if seachBar.text == ""{ 76 let selectedTimeLine = timeLines[indexPath.row] 77 performSegue(withIdentifier: "detail", sender: selectedTimeLine) 78 }else{ 79 let selectedTimeLine = seachedtimeLines[indexPath.row] 80 performSegue(withIdentifier: "detail", sender: selectedTimeLine) 81 } 82 83 } 84

試したこと

isEqualToを使用した場合は上手く表示されました。

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

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

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

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

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

Ogikubo

2021/01/08 16:36

hoshi-takanoriさんコメント有難うございます! そうだったんですね、、 参考サイト添付してくださりありがとうございます!試してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問