前提・実現したいこと
Firestoreのデータを表示しているtableViewのセルをタップしたとき、そのセルのドキュメントIDを取得したい。
実現したいことは以下の通りです。
1,タップしたセルのドキュメントIDを取得
2,DetaiviewControllerにそのIDを渡す。
3,DetaiviewControllerにあるgetActionボタンを押したらそのIDの投稿をマイページに保存する
プログラミング始めたてで質問の仕方が適切でないかもしれませんが、回答していただけると嬉しいです。
発生している問題・エラーメッセージ
タップしたセルのドキュメントIDが取得できません。
該当のソースコード
tableviewController
1 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TimeLineCell 3 cell.timeLineModel = self.timeLines[indexPath.row] 4 5 return cell 6 } 7 8 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 9 10 let selectedCell = tableView.cellForRow(at: indexPath) 11 musicName = timeLines[indexPath.row].musicName 12 groupName = timeLines[indexPath.row].groupName 13 constitution = timeLines[indexPath.row].constitution 14 15 performSegue(withIdentifier: "detail", sender: nil) 16 } 17 18 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 19 20 if segue.identifier == "detail" { 21 22 let detailViewController = segue.destination as! DetailViewController 23 24 detailViewController.musicName = musicName 25 detailViewController.groupName = groupName 26 detailViewController.constitution = constitution 27 }
TimeLineModel
1import Foundation 2import Firebase 3 4class TimeLineModel { 5 6 var musicName:String = "" 7 var groupName:String = "" 8 var constitution:String = "" 9 var ref = Firestore.firestore().collection("timeLine") 10 11 12 init(musicName:String,groupName:String,constitution:String) { 13 14 self.musicName = musicName 15 self.groupName = groupName 16 self.constitution = constitution 17 } 18 19 init(document:QueryDocumentSnapshot) { 20 21 if let value = document.data() as? [String:Any] { 22 23 musicName = value["musicName"] as! String 24 groupName = value["groupName"] as! String 25 constitution = value["constitution"] as! String 26 } 27 } 28 29 func toContents() -> [String:Any] { 30 return ["musicName":musicName,"groupName":groupName,"constitution":constitution] 31 } 32 33 func save() { 34 ref.addDocument(data: toContents()) 35 } 36
試したこと
https://teratail.com/questions/203222
この記事の方法を試しましたが draftData が何を指すのかわからず理解で解決できませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー