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, но все равно получаю ту же ошибку.

Скриншот

screenshot2

screenshot3

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.";
Другие вопросы по тегам