UIImagePickerController在Swift 3中

我最近使用开发人员testing版更新到了Xcode 8中的Swift 3。 我正在尝试实施Firebase身份validation,并且一切进展顺利。

我的问题:

我正尝试将图片作为用户的个人资料图片上传到Firebase数据库。

我以为我可以使用UIImagePickerController来做到这一点,但当我这样做,我得到了一个

“线程7:信号SIGABRT

我知道这通常会表示什么,但我检查了一下,当我点击它时,我的图像确实打印了我的testing语句。

我失败的方法:

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 beta的问题,或者如果我只是用swift 3来做错误的话。

编辑:

我使用的是xcode8的GM版本,但是仍然得到相同的错误。

截图

screenshot2

screenshot3

我认为你需要添加privacy - key卡玛拉和照片库的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

所以试试这个。

检查苹果文件的更多细节!

参考: 这个post

按照来自xCode的错误消息,并将密钥/值添加到应用程序的Info.plist

例如,我从我的开发应用程序中收到错误消息。 它提醒我将NSCameraUsageDescription添加到应用的Info.plist。


来自xCode的错误消息

这个应用程序已经崩溃,因为它试图访问隐私敏感的数据没有使用说明。 应用程序的Info.plist必须包含一个带有string值的NSCameraUsageDescription项,向用户解释应用程序如何使用此数据。


和更多

添加key/valueLocalizable.strings ,它会给i18n支持。 例如,我添加一对Localizable.strings (English) 。 当询问用户关于相机的许可时,会给出英文说明​​。

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