Cloud Firestoreからデータを取得してcellに表示したいです。
・出来ていること
コメントアウトしたTODOはcellに表示出来ています。
Cloud Firestoreからのデータ取得
・出来ていないこと
取得したデータをcellForRowAtに表示
エラー
Cannot assign value of type 'Character' to type 'String'
import UIKit import Firebase import FirebaseUI import FirebaseFirestore import FirebaseFirestoreSwift class MainViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate { // let TODO = ["牛乳を買う", "掃除をする", "アプリ開発の勉強をする"] //追加② var db: Firestore! var todos: [String] = []; // var titles = [String]() var textFieldString: String! @IBOutlet weak var tableView: UITableView! @IBOutlet weak var table: UITableView! @IBOutlet weak var textField: UITextField! func getSubCollection() { // [START setup] let settings = FirestoreSettings() Firestore.firestore().settings = settings // [END setup] db = Firestore.firestore() db.collection("users").document("qfkkamfkpeqp0191e92epa").collection("posts").document("subuser1") .addSnapshotListener { documentSnapshot, error in guard let document = documentSnapshot else { print("Error fetching document: (error!)") return } let todos = document.data().flatMap {$0} print(todos!.count) // switchに変更予定 if let title = todos?["title"]{ print(title) let title = title as! String // このtitleをtext型に変更してcellに渡したい type(of: title) // Expression of type 'Any.Type' is unused } /* if let content = todos?["content"]{ print(content) let content = content as! String } */ // for i in todos ?? [String : Any]() { // print(i) // } } } override func viewDidLoad() { super.viewDidLoad() textField.delegate = self getSubCollection() } override func viewWillAppear(_ animated: Bool) { self.tableView.reloadData() } @IBAction func addButton(_ sender: Any) { textFieldString = textField.text! db.collection("users").document("qfkkamfkpeqp0191e92epa").collection("posts").document("subuser1") .setData([ "title": textFieldString, "content": "なし" ]) { error in if let error = error { print("エラーが起きました") } else { print("ドキュメントが保存されました") } } } } extension MainViewController: UITableViewDataSource { // セルの数 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return todos.count } // セルの中身 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // セルを取得する let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) // セルに表示する値を設定する cell.textLabel!.text = todos[indexPath.row] return cell } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/18 05:45 編集
退会済みユーザー
2020/06/18 05:50 編集
2020/06/18 05:56
2020/06/18 06:16
退会済みユーザー
2020/06/18 06:18 編集
2020/06/18 06:29
退会済みユーザー
2020/06/18 06:31
2020/06/18 06:50 編集
2020/06/18 07:06
退会済みユーザー
2020/06/18 07:10
2020/06/18 07:14
2020/06/21 07:19