У меня действительно проблема, которую я не понимаю.Для создания этого кода я помог себе из учебника 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)})
}