私はFirebaseを使用してユーザープロファイル情報を保持しています。あなたはStorage Referenceを聞くことができないので、私はユーザーが自分のプロフィール写真を変更するたびに変更される子供をデータベースに追加しました(無作為に生成されたuuidStringだけですが、Firebaseで実際に変化していることを確認しました。ユーザーが情報を変更するたびに、そのプロファイルを表示しているユーザーが変更を参照するようにして、これをテストしました。子供が変更してもプロファイルの変更はありません。情報の別の部分、私はバイオでそれをテストし、プロファイルは最新のプロフィールPICとともに、更新するコードの半ばデバッグバージョンは以下の通りです:。これまでのところ、私は私の頭のために傷きFirebaseの問題.childChanged in Swift
let ref = DatabaseReference.allUsers.reference()
let query = ref.queryOrdered(byChild: "uid").queryEqual(toValue: (user.uid))
query.observe(.childChanged, with: { snapshot in
let user = User(dictionary: snapshot.value as! [String : Any])
self.user = user
self.bio.text = user.bio
self.user?.fullName = user.fullName
self.user?.instagram = user.instagram
self.user?.facebook = user.facebook
self.user?.phone = user.phone
self.user?.email = user.email
})
//let ref2 = DatabaseReference.users(uid: user.uid).reference()
//let query2 = ref2.child("updatePic")
query.observe(.childChanged, with: { snapshot in
let user = User(dictionary: snapshot.value as! [String : Any])
self.user?.downloadProfilePicture { [weak self] (image, error) in
self?.profilePicture.image = image
let profilePictureKey = "\(user.uid)-headerImage"
self?.cache?.setObject(image, forKey: profilePictureKey)
}
})
私は何が欠けているのか分かりません。基本的には、子供が変わったことを認識していません私の目の前でそれが変わるのを見ているのですが。何か案は?
update:childChangedがトリガーされたときにプロファイル写真が更新されず、同じ写真がダウンロードされている可能性がありますか?この写真を変更するための私の現在のコードです:
extension FIRImage {
func saveProfileImage(_ userUID: String, _ completion: @escaping (Error?) -> Void) {
let resizedImage = image.resized()
let imageData = UIImageJPEGRepresentation(resizedImage, 1.0)
ref = StorageReference.profileImages.reference().child(userUID)
downloadLink = ref.description
ref.put(imageData!, metadata: nil) {
(metaData, error) in
completion(error)
}
updateProfilePic(userUID)
}
func updateProfilePic(_ userUID: String) {
var randomString = UUID().uuidString
let ref = DatabaseReference.users(uid: userUID).reference()
ref.child("updatePic").setValue(randomString)
}
本当に役に立たない。それはあなたが整備士で、私はあなたにVWを持ってきたとしています。そして、あなたは「あなたはおそらくメルセデスを持っているはずです」と言いました。 – Sudacris