Swift - libc ++ abi.dylib: завершается с необработанным исключением типа NSException (lldb) - PullRequest
0 голосов
/ 03 июля 2018

Я создаю приложение, в котором вы загружаете фотографию, а затем она получает 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.
        }

1 Ответ

0 голосов
/ 04 июля 2018

просто добавьте, чтобы изменить URL-адрес на строку, изменив

                                "Link": downloadURL,

до

"Link": downloadURL.absoluteString,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...