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版本,但是仍然得到相同的错误。
我认为你需要添加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/value
对Localizable.strings
,它会给i18n
支持。 例如,我添加一对Localizable.strings (English)
。 当询问用户关于相机的许可时,会给出英文说明。
"NSCameraUsageDescription" = "We needs camera permission to capture image.";