ios - swift - libc++abi.dylib : terminating with uncaught exception of type NSException (lldb)

标签 ios swift google-cloud-firestore

我正在制作一个应用程序,您可以在其中上传照片,然后它获取 downloadURL 并将其保存在数据库中,但在将链接保存到数据库之前我收到错误。

*** 由于未捕获的异常“FIRInvalidArgumentException”而终止应用程序,原因:“不支持的类型:NSURL(在字段链接中找到)”

。 。 .

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.
        }

最佳答案

只需添加将 URL 更改为字符串

                                "Link": downloadURL,

"Link": downloadURL.absoluteString,

关于ios - swift - libc++abi.dylib : terminating with uncaught exception of type NSException (lldb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144047/

相关文章:

ios - 防止 iOS 自动化仪器在失败后自动重试测试

web - Firestore web保存数据离线反馈

javascript - 从 Firestore 中的一个集合中获取所有文档

ios - 如何处理 Firestore 查询结果供以后使用

ios - 发布到 Facebook 的链接,包括应用程序 URL 方案 - iOS 6

ios - 当单元格在 View 外部时,ClipsToBounds重置

iOS:在单独的线程中加载图像时保持用户界面响应

arrays - append NSDate 类型的值不起作用

ios - 如何在没有任何第三方库的情况下在 Swift 3.0 中使用 Alamofire 解析 JSON

swift - 我可以不在循环中使用调度组吗?