プロフィール情報(名前、アイコン画像)を、firebaseのRealtimeDatabaseに保存する機能を作っています。
以下は変更ボタンが押された時のコードです。
swift
1//userdefaultとサーバに送る 2 @IBAction func changeProfile(_ sender: Any) { 3 4 //userdefaultに保存 5 let userDefault = UserDefaults.standard 6 7 //名前 8 let username = nameTextField.text 9 userDefault.set(username, forKey: "username") 10 11 //アイコン画像 12 var data: Data = Data() 13 if let image = iconImageView.image { 14 data = UIImageJPEGRepresentation(image, 0.1)! as Data 15 } 16 let encodedIcon = data.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters) as String 17 userDefault.set(encodedIcon, forKey: "usericon") 18 19 20 //サーバに保存 21 let ref = Database.database().reference() 22 23 //アイコンを設定してない場合(初期設定のアイコン)はnilを送る 24 if iconImageView.image == UIImage(named: "user.png") { 25 let prof: Dictionary = ["username": username, "usericon": nil] 26 ref.child("profs").childByAutoId().setValue(prof) 27 28 } else { 29 30 //アイコンを設定している場合はそれを送る 31 let prof: Dictionary = ["username": username, "usericon": encodedIcon] 32 ref.child("profs").childByAutoId().setValue(prof) 33 } 34 }
この状態で変更ボタンを押すと、同一のユーザー(メアドとパスワードが同じ)のプロフィールが複数できてしまいます。
同一ユーザーのプロフィール変更は1ユーザーに1profを割り当て、profsの中に「追加」ではなく既存のプロフィール情報に「上書き」する形にしたいのですが、それにはどう修正を加えれば良いでしょうか?
また、このアプリはSNSにするのですがそもそもよく使うプロフィール情報はこの様に設計するのは一般的ではないなどのご意見もありましたらそちらも一言教えていただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/23 07:08
2018/03/23 08:09
2018/03/23 09:46