Проблема при попытке загрузить изображения в Firebase Storage and Database? - PullRequest
0 голосов
/ 09 октября 2018

У меня действительно проблема, которую я не понимаю.Для создания этого кода я помог себе из учебника YouTube, при запуске он работает, но затем я получаю ошибку: [обнаружение] ошибки, обнаруженные при обнаружении расширений: Error Domain = PlugInKit Code = 13 "запрос отменен" и получаемые изображенияот пользователей не загружать в хранилище Firebase, ни в базу данных Firebase.Я новичок в xcode, может кто-нибудь сказать мне, почему?(И я не получаю никакого сообщения об ошибке), он должен сохранить изображение, выбранное пользователем, в хранилище firebase, а затем зарегистрировать URL-адрес изображения под пользовательским uid в базе данных firebase, большое спасибо тем, кто потратил некоторое время начитать и ответить на это.Вот мой код:

import UIKit

import Firebase

class Profile: UIViewController {
    @IBOutlet weak var MyImageView: UIImageView!
    var selectedImage: UIImage?

    override func viewDidLoad() {
        super.viewDidLoad()

        let tapGesture = UITapGestureRecognizer(target: self, action:      #selector(Profile.handleSelectProfileImageView))
        MyImageView.addGestureRecognizer(tapGesture)
        MyImageView.isUserInteractionEnabled = true
    }

    @objc func handleSelectProfileImageView(){
        let pickerController =  UIImagePickerController()
        pickerController.delegate = self
        present(pickerController, animated: true, completion: nil)
    }

    @IBAction func OkButtonTapped(_ sender: UIButton) {

        let uid = Auth.auth().currentUser!.uid
        let storageBase = Storage().reference()
        let storageRef = storageBase.child("profile_image").child(uid)

        if let profileImg = self.selectedImage, let imageData =   profileImg.jpegData(compressionQuality: 0.1) {
            storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in

                storageRef.downloadURL { (url, error) in
                    guard url != nil else {
                        // Uh-oh, an error occurred!
                        return
                    }                        // Get the download URL in Database
                    let ref = Database.database().reference()
                    let usersReference = ref.child("users")
                    let uid = Auth.auth().currentUser!.uid
                    let newUserReference = usersReference.child(uid)
                    newUserReference.setValue(["profileImageUrl": self.provideImageData])

                }
            })
        }
    }
}

extension Profile: UINavigationControllerDelegate,  UIImagePickerControllerDelegate {

    func imagePickerController(_ picker: UIImagePickerController,  didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        // Local variable inserted by Swift 4.2 migrator.
        let info = convertFromUIImagePickerControllerInfoKeyDictionary(info)

        print("OKAY")
        if let image = info["UIImagePickerControllerOriginalImage"] as? UIImage{
            selectedImage = image
            MyImageView.image = image
            MyImageView.setRounded()
        }
        dismiss(animated: true, completion: nil)
    }
}

extension UIImageView {
    func setRounded() {
        self.layer.cornerRadius = (self.frame.width / 2)
        self.layer.masksToBounds = true
    }
}

// Helper function inserted by Swift 4.2 migrator.
private func convertFromUIImagePickerControllerInfoKeyDictionary(_ input: [UIImagePickerController.InfoKey: Any]) -> [String: Any] {
    return Dictionary(uniqueKeysWithValues: input.map {key, value in (key.rawValue, value)})
}
...