web-dev-qa-db-fra.com

UIImagePickerController dans Swift 3

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.

 Screenshot

 screenshot2

 screenshot3

6
Mitsuko Megumi

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

9
Lion

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.


Le message d'erreur de xCode

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.


Et plus

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.";
1
AechoLiu