Я пытаюсь разрешить пользователю загружать изображения вместе со своей аудиозаписью.Согласно документации Firebase, я вложил ссылку на базу данных в ссылку на хранилище, чтобы загрузить их, но я не могу создать и отправить URL-адреса как для изображения, так и для аудио.Я мог бы отправить их отдельно как две разные ссылки на базу данных, но это могло бы вызвать проблемы при загрузке их обратно в приложение (без какого-либо идентификатора, связывающего изображение и звук).Если кто-нибудь знает, как отправить два как один реф, ваша помощь приветствуется.
func uploadRecording () {
if let audioRecording = recordedAudioURL {
let audioIDString = NSUUID().uuidString
let audioStorageRef = Storage.storage().reference(forURL: Config.STORAGE_ROOT_REFERENCE).child("posts").child(audioIDString)
audioStorageRef.putFile(from: audioRecording, metadata: nil, completion: {(_ , error: Error?) in
if error != nil {
print (error)
return
}
audioStorageRef.downloadURL(completion: { (url: URL?, error: Error?) in
if let audioDownloadURL = url?.absoluteString {
if error != nil {
print(error)
return
}
sendDatatoDatabase(recordedAudioURL: audioDownloadURL)
}
})
})
}
// upload selected image to Firebase
func uploadImage () {
if let lessonImg = self.selectedImage, let imageData = lessonImg.jpegData(compressionQuality: 0.1) {
let photoIDString = NSUUID().uuidString
let photoStorageRef = Storage.storage().reference(forURL: Config.STORAGE_ROOT_REFERENCE).child("posts").child(photoIDString)
photoStorageRef.putData(imageData, metadata: nil, completion: {(_ , error: Error?) in
if error != nil {
print(error)
return
}
photoStorageRef.downloadURL(completion: { (url: URL?, error: Error?) in
if let photoDownloadURL = url?.absoluteString {
if error != nil {
print(error)
return
}
}
})
}
)}
}
Для newPostReference я получаю сообщение об ошибке: Использование неразрешенного идентификатора 'photoDownloadURL'
func sendDatatoDatabase (recordedAudioURL: String) {
let ref = Database.database().reference()
let postsReference = ref.child("posts")
let newPostID = postsReference.childByAutoId().key
let newPostReference = postsReference.child(newPostID!)
newPostReference.setValue(["recordingURL": recordedAudioURL, "photoURL": photoDownloadURL, "lessonTitle": lessonTitleTextField.text!, "lessonTopic": lessonTopicTextField.text!, "lessonLocation": lessonlocationTextField.text!])
self.lessonlocationTextField.text = " "
self.lessonTopicTextField.text = " "
self.lessonTitleTextField.text = " "
self.tabBarController?.selectedIndex = 1
}