UIImagePickerController в Swift 3
Я недавно обновился до Swift 3 в Xcode 8, используя бета-версию разработчика. Я пытаюсь реализовать Firebase Auth, и все идет хорошо.
Моя проблема:
Я пытаюсь загрузить изображение как фотографию профиля пользователя в базу данных Firebase.
Я думал, что мог бы использовать UIImagePickerController
чтобы сделать это, но когда я делаю, я получаю
"Тема 7: Сигнал SIGABRT
Я знаю, на что это обычно указывает, но я проверил, и мое изображение действительно печатает мой тестовый отчет, когда я нажимаю на него.
Мой неудачный метод:
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)
}
Я еще не уверен, является ли это просто проблемой со Swift 3 и бета-версией разработчика Xcode 8, или я просто делаю это неправильно для Swift 3.
РЕДАКТИРОВАТЬ:
Я использую GM версию xcode8, но все равно получаю ту же ошибку.
2 ответа
Я думаю, что вам нужно добавить privacy - key
для Камара и фото библиотеки в вашем info.plist
файл от xcode 8
, например,
Key : Privacy - Media Library Usage Description
Value : YES
Key : Privacy - Photo Library Usage Description
Value : YES
Key : Privacy - Camara Usage Description
Value : YES
здесь значение string
не Boolean
,
так попробуй это.
Проверьте документацию Apple для более подробной информации!
Ссылка: это так пост
Следуйте сообщению об ошибке из xCode и добавьте ключ / значение в Info.plist
приложения.
Например, я получил сообщение об ошибке из моего приложения для разработки. Это напоминает мне добавить NSCameraUsageDescription
в Info.plist приложения.
Сообщение об ошибке от xCode
Это приложение упало, потому что оно пыталось получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSCameraUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
И больше
добавлять key/value
пара в Localizable.strings
Даст i18n
служба поддержки. Например, я добавляю пару к Localizable.strings (English)
, Это даст английское описание, когда спросить пользователя о разрешении камеры.
"NSCameraUsageDescription" = "We needs camera permission to capture image.";