webentwicklung-frage-antwort-db.com.de

UIImagePickerController in Swift 3

Ich habe kürzlich mit der Entwickler-Beta auf Swift 3 in Xcode 8 aktualisiert. Ich versuche, Firebase Auth zu implementieren, und alles läuft gut.

Mein Problem:

Ich versuche, ein Bild als Profilbild eines Benutzers in eine Firebase-Datenbank hochzuladen.

Ich dachte, ich könnte die UIImagePickerController verwenden, um dies zu tun, aber wenn ich das tue, bekomme ich eine

"Thread 7: Signal SIGABRT

Ich weiß, worauf dies normalerweise hindeuten würde, aber ich habe es überprüft, und mein Bild druckt tatsächlich meinen Testauszug, wenn ich darauf tippe.

Meine fehlgeschlagene Methode:

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)
}

Ich bin mir noch nicht sicher, ob dies nur ein Problem mit Swift 3 und dem Entwickler Xcode 8 Beta ist oder ob ich es für Swift 3 nur falsch mache.

BEARBEITEN:

Ich verwende die GM -Version von xcode8, erhalte aber immer noch den gleichen Fehler.

 Screenshot

 screenshot2

 screenshot3

6
Mitsuko Megumi

Ich denke, Sie müssen privacy - key für Camara und Fotobibliothek in Ihre info.plist-Datei ab xcode 8 einfügen. zum Beispiel,

 Key : Privacy - Media Library Usage Description
 Value : YES 

 Key : Privacy - Photo Library Usage Description
 Value : YES 

 Key : Privacy - Camara Usage Description
 Value : YES 

hier ist der Wert string nicht Boolean.

also versuch das mal.

Weitere Informationen finden Sie in der Apple-Dokumentation !

Hinweis: dies so post

9
Lion

Folgen Sie der Fehlermeldung von xCode und fügen Sie den Schlüssel/Wert zum Info.plist der Anwendung hinzu.

Ich habe beispielsweise eine Fehlermeldung von meiner sich entwickelnden App erhalten. Es erinnert mich daran, NSCameraUsageDescription zur Info.plist der App hinzuzufügen.


Die Fehlermeldung von xCode

Diese App ist abgestürzt, weil versucht wurde, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSCameraUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.


Und mehr

Fügen Sie key/value pair zu Localizable.strings hinzu, um i18n zu unterstützen. Zum Beispiel füge ich ein Paar zu Localizable.strings (English) hinzu. Es wird eine englische Beschreibung geben, wenn der Benutzer nach der Kameraerlaubnis gefragt wird.

"NSCameraUsageDescription" = "We needs camera permission to capture image.";
1
AechoLiu