firebaseのRealtimeDatabaseとAuthを使用したSNSアプリを作っています。
画像を一枚だけ新規作成画面のimageviewにセットし、予め登録していた名前とアイコン画像と一緒にタイムラインのcollectionviewに表示させる機能を作っています。
swift
1 @IBAction func post(_ sender: Any) { 2 3 //セットした画像をエンコード 4 var data: Data = Data() 5 if let image = iconImageView.image { 6 data = UIImageJPEGRepresentation(image, 0.1)! as Data 7 } 8 let encodedIcon = data.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters) as String 9 10 //firebaseにpostを送る 11 let ref = Database.database().reference() 12 let uid = Auth.auth().currentUser?.uid 13 14 let post: Dictionary = ["postimage": encodedIcon] 15 ref.child("posts").child(uid!).setValue(post) 16 17 KRProgressHUD.showSuccess(withMessage: "送信しました") 18 19 //画面を閉じる 20 self.dismiss(animated: true, completion: nil) 21 }
ご覧の様に、投稿データであるpostには投稿画像の画像データしか入れていません。
しかし、タイムラインのcollectionviewにはusername,usericon,postimageの三つを一つのセルとして表示する予定です。
この様な機能を実装する場合、postのデータ構造は投稿主の名前、アイコン、投稿画像(username,usericon,postimage)の三つのデータをまとめておくものなのでしょうか?
もしまとめるとなると、profのデータとpostのデータ内容の(usernameとusericon)が被ってしまうと思われるのですが、ここは致し方ないのでしょうか?
それとも私の現在のコードの様に別々に送り、表示するときにuidなどで投稿したユーザーのprofとpostを結びつけてタイムラインに表示するものなのでしょうか?
また、一般的にこの様なSNSアプリではこの様な構造にするのがセオリーだ。などありましたらお教えいただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/27 12:09 編集