sd_setImageでダウンロードした画像をUIIMageView.imageプロパティに反映させたいです。
PodFileで pod 'FirebaseUI/Storage'をインストールして "xcworkspace"で作業してます。
公式ドキュメントに従って、階層構造のディレクトリに画像を格納することはできて、
コンソール画面からも確認できるのですが、なぜかその画像を sd_setImage メソッドを使ってダウンロードすることができません。
バケットのルールは以下のようにしています。
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write; } } }
またネイティブプリ内のアップロードコードは関数にして一般化しています。
swift
1func uploadFirebase(data:Data,child:String) { 2 let storage = Storage.storage() 3 let storageRef = storage.reference(forURL: "HogeHoge.com") 4 let postimagesRef = storageRef.child("profileImages") 5 let imagesChildRef = postimagesRef.child("(child).png") 6 let uploadTask = imagesChildRef.putData(data, metadata: nil) { (metadata, error) in 7 guard let metadata = metadata else { 8 return 9 } 10}
そしてダウンロードコードが以下の通りです。
Swift
1func setProfileImageView(userId:String) { 2let storage = Storage.storage() 3let storageRef = storage.reference(forURL: "HogeHoge.com") 4let profileimagesRef = storageRef.child("profileimages") 5let imagesChildRef = profileimagesRef.child("(userId)" + "profile.png") 6let placeholderImage = UIImage(named: "avatar") 7self.profileImageView.sd_setImage(with: imagesChildRef, placeholderImage: placeholderImage) 8print("関数はしっかりと動いてる、しかし画像がダウンロードされない") 9}
ここに質問の内容を詳しく書いてください。
以上のコードで、テストプロジェクトを作ったときには、しっかりと UITableView の UITableViewCell の UIImage.imageプロパティに表示されました。
現在頭を抱えているのが、本番環境で実装をしているのにこちらの思うように動いてくれないことです。
発生している問題・エラーメッセージ
特にありません。 ダウンロードコードの末尾にデバック画面に文字列を出力するようにしているのですが、この文字列は出力されます。 ただし、UIImageView の image プロパティには placeholderImage の画像が出てしまいます。 画像がダウンロードできていないのは、関数の誤作動なのでしょうか。
試したこと
もう一個別のテストプロジェクトを作って本番環境と全く同じ仕様にしたら、しっかりと画像はダウンロードされてシミュレータ上で確認することができます。
補足情報(FW/ツールのバージョンなど)
もしこの問題の解決策をお持ちの方がいらっしゃいましたら、ご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー