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