J'ai récemment mis à jour Swift 3 dans Xcode 8 à l'aide de la version bêta du développeur. J'essaie d'implémenter Firebase Auth, et tout va bien.
Mon problème:
J'essaie de télécharger une image en tant que photo de profil d'un utilisateur vers une base de données Firebase.
Je pensais pouvoir utiliser UIImagePickerController
pour le faire, mais lorsque je le ferais, je recevrais un
"Sujet 7: Signal SIGABRT
Je sais ce que cela indiquerait normalement, mais j'ai vérifié et mon image imprime bien ma déclaration de test lorsque je la tape.
Ma méthode a échoué:
ViewController.Swift
import UIKit
import Firebase
import Photos
class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
@IBOutlet weak var imageView: UIImageView!
@IBOutlet var emailTextField: UITextField!
@IBOutlet var passWordTextField: UITextField!
@IBOutlet var nameTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
if FIRAuth.auth()?.currentUser?.uid != nil {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let view = storyboard.instantiateViewController(withIdentifier: "ProfileViewController")
self.present(view, animated: true, completion: nil)
}
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
imageView.isUserInteractionEnabled = true
self.emailTextField.delegate = self;
self.passWordTextField.delegate = self;
self.nameTextField.delegate = self;
}
func handleSelectProfileImageView() {
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true
present(picker, animated: true, completion: nil)
}
Je ne sais pas encore s'il s'agit d'un problème avec Swift 3 et le développeur Xcode 8 beta, ou si je ne le fais pas correctement pour Swift 3.
MODIFIER:
J'utilise la version GM de xcode8, mais j'obtiens toujours la même erreur.
Je pense que vous devez ajouter privacy - key
pour camara et photothèque dans votre fichier info.plist
à partir de xcode 8
. par exemple,
Key : Privacy - Media Library Usage Description
Value : YES
Key : Privacy - Photo Library Usage Description
Value : YES
Key : Privacy - Camara Usage Description
Value : YES
ici, la valeur est string
pas Boolean
.
alors essayez ceci.
Consultez Documentation Apple pour plus de détails!
Référence: this so post
Suivez le message d'erreur de xCode et ajoutez la clé/valeur à Info.plist
de l'application.
Par exemple, mon application en développement m'a envoyé un message d'erreur. Cela me rappelle d'ajouter NSCameraUsageDescription
à Info.plist de l'application.
Cette application s'est bloquée car elle a tenté d'accéder à des données confidentielles sans description d'utilisation. Info.plist de l'application doit contenir une clé NSCameraUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.
Ajoutez la paire key/value
à la commande Localizable.strings
, cela donnera le support de i18n
. Par exemple, j'ajoute une paire à Localizable.strings (English)
. Il donnera une description en anglais lorsque l'utilisateur posera des questions sur l'autorisation de la caméra.
"NSCameraUsageDescription" = "We needs camera permission to capture image.";