firebase Storageに保存した際のdownloadURLを画像の参照としてRealtimeDatabaseに保存しようとしたのですがURLは保存できないらしく、Stringとして保存したいのですがoptionnalがついてしまいます。
コード上のコメントアウトした部分です。let url = String(description: downloadURL)
現在は該当部分を let url = try! String(contentsOf: downloadURL!) と記述しています。
swift
1//firebaseにpostを送る 2 let uid = Auth.auth().currentUser?.uid 3 4 let RDBref = Database.database().reference() 5 let newPostRef = RDBref.child("posts").child(uid!).childByAutoId() 6 let newPostID = newPostRef.key 7 8 let storageRef = Storage.storage().reference() 9 storageRef.child("posts").child(uid!).child(newPostID).putData(data, metadata: nil) { metadata, error in 10 if error != nil { 11 12 } else { 13 let downloadURL = metadata!.downloadURL() 14 // let url = String(description: downloadURL) 15 let url = try! String(contentsOf: downloadURL!) 16 let post: Dictionary = ["postimage": url] 17 RDBref.child("posts").child(uid!).childByAutoId().setValue(post) 18 19 20 21 } 22 }
このメソッドをよんで見たところ以下のエラーが出ました。
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! の書き方だとエラーが出ますよ。テキストエンコーディングを特定できないため、開けませんでした。
ということだと思うのですが、どう修正すれば良いでしょうか?
ググってそれらしい物が見つからなかったため質問した次第です。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/02 03:09