簡體   English   中英

Swift 4 錯誤在模擬器中使用 Firebase 嘗試從照片庫上傳圖像

[英]Swift 4 Error Using Firebase in Simulator Trying to Upload Image From Photo Library

我收到以下錯誤:

發現擴展時遇到的錯誤:Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

使用模擬器並從 iPhone 存儲的庫中選擇照片時....

任何人都可以看到下面代碼中可能存在的問題嗎?

import UIKit
import Firebase

class PictureViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var descriptionTextField: UITextField!
    @IBOutlet weak var nextButton: UIButton!

    var imagePicker = UIImagePickerController()


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        imagePicker.delegate = self

    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let image = info[UIImagePickerControllerOriginalImage] as! UIImage

        imageView.image = image

        imageView.backgroundColor = UIColor.clear

        imagePicker.dismiss(animated: true, completion: nil)

    }

    @IBAction func cameraTapped(_ sender: Any) {

        imagePicker.sourceType = .savedPhotosAlbum
        imagePicker.allowsEditing = false

        present(imagePicker, animated: true, completion: nil)

    }

    @IBAction func nextTapped(_ sender: Any) {

        let imagesFolder = Storage.storage().reference().child("images")

        let imageData = UIImagePNGRepresentation(imageView.image!)!

        imagesFolder.child("images.png").putData(imageData, metadata: nil, completion: {(metadata, error) in
            print("We tried to upload!")
            if error != nil {
                print("We had an error:\(error)")
            } else {
                self.performSegue(withIdentifier: "selectUsersegue", sender: nil)
            }
        })


    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    }

}

嘗試將視圖控制器的 modalPresentationStyle 指定為.overFullScreen

    @IBAction func cameraTapped(_ sender: Any) {
        imagePicker.sourceType = .savedPhotosAlbum
        imagePicker.allowsEditing = false
        imagePicker.modalPresentationStyle = .overFullScreen
        present(imagePicker, animated: true, completion: nil)
    }

不知道它是否適合你,但我想你應該試一試。 問題之一可能是,您無權訪問設備上的“照片”。 (如果這是你的所有代碼,看起來我是對的)

幾周前我遇到了類似的問題,添加權限請求解決了它。

編輯

// Authorization for Photos
    let photos = PHPhotoLibrary.authorizationStatus()
    if photos == .notDetermined {
        PHPhotoLibrary.requestAuthorization({status in
            if status == .authorized{
                ...
            } else {}
        })
    }

還要確保將這些添加到 Info.plist

<key>NSPhotoLibraryUsageDescription</key>
<string>Description.</string>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM