Я создаю приложение, в котором вы загружаете фотографию, а затем она получает downloadURL и сохраняет ее в базе данных, но я получаю сообщение об ошибке перед сохранением ссылки в базе данных.
*** Завершение работы приложения из-за необработанного исключения «FIRInvalidArgumentException», причина: «Неподдерживаемый тип: NSURL (находится в поле Link)» *
.
,
.
libc ++ abi.dylib: завершается с необработанным исключением типа NSException (lldb)
РЕЗЬБА 1: сигнал SIGABRT
и я не могу понять, почему.
Спасибо
import UIKit
import Firebase
var docRefIm: DocumentReference!
var docRefImC: CollectionReference!
class carregar: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate {
@IBOutlet weak var upload: UIButton!
@IBOutlet weak var myImage: UIImageView!
@IBAction func uploadBt(_ sender: Any) {
let image = UIImagePickerController()
image.delegate = self
image.allowsEditing = true
image.sourceType = UIImagePickerControllerSourceType.photoLibrary
self.present(image, animated: true){
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
var selectedImage: UIImage?
if let editedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
myImage.image=editedImage
selectedImage = editedImage
} else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
{
myImage.image=image
selectedImage = image
}
self.dismiss(animated: true, completion: nil)
let storageRef = Storage.storage().reference()
let imageName = NSUUID().uuidString
let fullImageRef = storageRef.child("casamentoMR/\(imageName).jpeg")
let compImageRef = storageRef.child("casamentoMR/compressed/\(imageName).jpeg")
let newMetadata = StorageMetadata()
newMetadata.contentType = "image/jpeg";
if let uploadDataComp = UIImageJPEGRepresentation(myImage.image!, 0.15){
compImageRef.putData(uploadDataComp, metadata: newMetadata, completion: { (metadata, error) in
if error != nil {
print(error)
return
} else {
compImageRef.downloadURL { (url, error) in
guard let downloadURL = url
else {
// Uh-oh, an error occurred!
return
}
docRefImC = Firestore.firestore().collection("Imagens")
docRefImC.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
id += 1
}
docRefIm = Firestore.firestore().collection("Imagens/").document(String(id))
docRefIm.setData([
"Link": downloadURL,
"ID": id+1
]) { err in
if let err = err {
print("Error writing document: \(err)")
} else {
print("Document successfully written!")
}
}
}
}
}}
})
}
if let uploadData = UIImageJPEGRepresentation(myImage.image!, 0.7){
fullImageRef.putData(uploadData, metadata: newMetadata, completion: { (metadata, error) in
if error != nil {
print(error)
return
}
})
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true,completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
view.setGradientBackground(colorOne: Colors.MarPink, colorTwo: Colors.AzRui)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}