I'm making an app where you upload a photo and then it gets is downloadURL and saves it in a database but im' getting an error before saving the link on the database.
*** Terminating app due to uncaught exception 'FIRInvalidArgumentException', reason: 'Unsupported type: NSURL (found in field Link)'
. . .
libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)
THREAD 1: signal SIGABRT
and I can't seem to understand why.
Thanks
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.
}