firebase Storageに保存した際のdownloadURLを画像の参照としてRealtimeDatabaseに保存しようとしたのですがURLは保存できないらしく、Stringとして保存したいのですがoptionnalがついてしまいます。
コード上のコメントアウトした部分です。let url = String(description: downloadURL)
現在は該当部分を let url = try! String(contentsOf: downloadURL!) と記述しています。
swift
//firebaseにpostを送る let uid = Auth.auth().currentUser?.uid let RDBref = Database.database().reference() let newPostRef = RDBref.child("posts").child(uid!).childByAutoId() let newPostID = newPostRef.key let storageRef = Storage.storage().reference() storageRef.child("posts").child(uid!).child(newPostID).putData(data, metadata: nil) { metadata, error in if error != nil { } else { let downloadURL = metadata!.downloadURL() // let url = String(description: downloadURL) let url = try! String(contentsOf: downloadURL!) let post: Dictionary = ["postimage": url] RDBref.child("posts").child(uid!).childByAutoId().setValue(post) } }
このメソッドをよんで見たところ以下のエラーが出ました。
Thread 1: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=264 "The file “-L9-w7PXZl8s1bUroVMw” couldn’t be opened because the text encoding of its contents can’t be determined." UserInfo={NSURL=https://firebasestorage.googleapis.com/v0/b/twitter-92481.appspot.com/o/posts%2FMfzPQc7iVraWHQMoikUTya8nS3K3%2F-L9-w7PXZl8s1bUroVMw?alt=media&token=4e8fec36-5a89-4aa5-9673-55e4a11ca6e9}
try! の書き方だとエラーが出ますよ。テキストエンコーディングを特定できないため、開けませんでした。
ということだと思うのですが、どう修正すれば良いでしょうか?
ググってそれらしい物が見つからなかったため質問した次第です。
まだ回答がついていません
会員登録して回答してみよう