Сохранить изображение профиля пользователя в firebase - PullRequest
0 голосов
/ 02 июля 2018

Добрый день, я пытаюсь разрешить пользователям сохранять фотографию своего профиля в firebase. мое приложение работает без сбоев. однако, когда я выбираю изображение, оно не сохраняется в системе. У меня есть ViewController и файл расширения, в который я помещаю свой код. Я разместлю ниже. Пожалуйста, помогите мне понять, что я делаю неправильно. Надеюсь, этот вопрос поможет другим, кто сталкивается с такими же проблемами.

import UIKit
import Firebase

class EditProfileVC: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    setupProfileImageView()
    self.view.backgroundColor = UIColor.white

}
func setupProfileImageView() {
    view.addSubview(profileImageView)
    profileImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    profileImageView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100).isActive=true
    profileImageView.widthAnchor.constraint(equalToConstant: 120).isActive = true
    profileImageView.heightAnchor.constraint(equalToConstant: 120).isActive = true
    profileImageView.layer.cornerRadius = 60
    profileImageView.layer.masksToBounds = true
   var randomString = UUID().uuidString
    let storageRef = Storage.storage().reference().child;"\(randomString).png")

    if let uploadImage = UIImagePNGRepresentation(self.profileImageView.image!) {

        storageRef.putData(uploadImage, metadata: nil) { (metadata, error) in
            if error != nil {
                print("Error upload data to Firebase Storage. Detail: \(String(describing: error))")
                return
            }
            if let profileImageURl = metadata?.downloadURL()?.absoluteString {
            self.registerUser(UserId: userId, profileImageURL: profileImageURL) {
            }
        }
    }
    }

}
lazy var profileImageView: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "users")
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.contentMode = .scaleAspectFill

    imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
    imageView.isUserInteractionEnabled = true
    return imageView
}()

}

// Это мой файл расширения

import UIKit
import Firebase
extension EditProfileVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate{

@objc func handleSelectProfileImageView() {
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true

present(picker, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    var selectedImageFromPicker: UIImage?
    dismiss(animated: true, completion: nil)
    if let editedImage = info["UIImagePickerControllerEditedImage"] {
        selectedImageFromPicker = editedImage as? UIImage
    } else if let originalImage = info["UIImagePickerControllerOriginalImage"] {
        selectedImageFromPicker = originalImage as? UIImage
    }        
    if let selectedImage = selectedImageFromPicker {
        profileImageView.image = selectedImage
    }

    print(info)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    print("Canceled Picker")
    dismiss(animated: true, completion: nil)

 }
 }

Мое приложение не падает, когда я его запускаю. Это просто нет изображений хранятся в FireBase. Я хочу, чтобы пользователи нажимали на EditProfileVC, затем могли изменить изображение своего профиля и сохранить его. Если кто-то может помочь мне решить эту проблему, это было бы очень признательно.

...