Firebaseをベースにした簡単なポスト作成プロジェクトを作成しました。私はこのようにFirebaseに投稿を保存します:SwiftはStructure内の変数がオプションであると考えます
let data = UIImageJPEGRepresentation(newPostImageView.image!, 0.5)//Take photo from imageview
let metadata = FIRStorageMetadata()
metadata.contentType = "image/jpeg"//Define post image path
let postId = "\(currentUser.generalDetails.uid)\(NSUUID().uuidString)"//Generate postId
let imagePath = "postImages\(postId)/postPic.jpg"
storageRef.child(imagePath).put(data!, metadata: metadata) { (metadata, error) in
if error == nil {
let postRef = self.databaseRef.child("posts").childByAutoId()
let post = Post(postImageUrl: String(describing: metadata?.downloadURL()), profileImageUrl: self.currentUser.generalDetails.profileImageURL, postId: postId, content: self.newPostTextView.text, username: self.currentUser.generalDetails.userName)
postRef.setValue(post.toAnyObject())
}else {
print(error!.localizedDescription)
}
}
dismiss(animated: true, completion: nil)
currentUser.generalDetails. ...
は私が持っています。
- しかし、それは
私がoptionalsを持っていないので、私は、理由を理解していない
"(https://firebasestorage.googleapis.com/v0/b/オプション" のようなFirebaseに"postImageUrl"
を設定します。imagePickerからの画像ですオプション?
なぜ 'String(describe:) 'を使用しますか? 'downloadURL()'はヌル入力可能で、理由は... – Larme
Xcodeが不平を言っていたので、私はそれをしました。そして私にそれをそこに入れるように頼みます。 –
'String(describe:)' *何かを文字列に変換します。通常はコンパイルするための正しい解決策ではありません。 –