

お絵かきアプリで描いたデータをimageView化し、それをFirebaseに保存できるようにしたく以下のリンクを参考にやってみたのですが、エラーが発生してFirebaseにデータが保存されません。

エラーメッセージは、「コードが間違っているか足りないためデータ（image）をアップロードできません。」とでます。  
このメッセージはSimulatorで動作確認中にXcodeの画面上に表示されています。

以下のコードの中でどこに問題があるかご教示いただきたく質問致します。

補足情報  
「データベースへの保存に成功」という部分（つまりDataというテキストデータ）はFirebaseには保存できたのですが、まだ画像を保存する部分ができていません。

[このリンクは参考にした動画です](https://youtu.be/gC_I1PfiOOQ)

[code]

    import UIKit
    import PencilKit
    import Firebase
    import FirebaseStorage
    import FirebaseDatabase
    
    class ViewController: UIViewController, PKCanvasViewDelegate, UITextFieldDelegate {
        
        private lazy var canvasView: PKCanvasView = setupCanvasView()
        private lazy var imageView: UIImageView = setupImageView()
        @IBOutlet weak var nameTitle: UITextField!
        
        var ref: DatabaseReference!
        
            override func viewDidLoad() {
                super.viewDidLoad()
                // Do any additional setup after loading the view.
                self.canvasView.addSubview(self.imageView)
                self.canvasView.sendSubviewToBack(self.imageView)
                self.view.addSubview(self.canvasView)
                
                self.updateImageView()
                self.textField()
                
                nameTitle.text = "Data"
                nameTitle.textAlignment = NSTextAlignment.center
                nameTitle.borderStyle = UITextField.BorderStyle.line
                nameTitle.returnKeyType = UIReturnKeyType.done //完了ボタン
    
    
                navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save To Photo", style: .plain, target: self, action: #selector(dispAlert))
                
                let nameTitle = UITextField()
                nameTitle.text = "data"
                self.navigationItem.titleView = nameTitle
                nameTitle.delegate = self
                   
                ref = Database.database().reference()
            }
    
     func textFieldShouldReturn(_ textField: UITextField) -> Bool {
            // キーボードを閉じる
            textField.resignFirstResponder()
            return true
        }
    
     private func textField() {
        guard let nameTitle = nameTitle.text else { return }
        let data = [ "dataTitle": nameTitle] as [String : Any]
        
        Firestore.firestore().collection("data").document(nameTitle).setData(data) { (err) in
            if err != nil {
                print("データベースへの保存に失敗")
                return
            }
            print("データベースへの保存に成功")
        }
    }
    
    
    
    @objc private func updateImageView() {
        guard let image = imageView.image else { return }
        guard let UIImageView = image.jpegData(compressionQuality: 0.5) else {
            return }
            
        let fileName = NSUUID().uuidString
        let storageRef = Storage.storage().reference().child("data_image").child(fileName)
        storageRef.putData(UIImageView, metadata: nil) { ( metadata, err) in
            if err != nil {
                print("Failed to update")
                return
            }
            print("Succeded to update")
            storageRef.downloadURL { (url, err) in
                if err != nil {
                    print("Failed to download")
                    return
                }
                guard let urlString = url?.absoluteString else { return }
                print("urlString: ", urlString)
            }
        }
    }
    
    
        func scrollViewDidZoom(_ scrollView: UIScrollView) {
            if scrollView == self.canvasView {
                self.imageView.frame.size = CGSize(width: self.view.frame.width * scrollView.zoomScale, height: self.view.frame.height * scrollView.zoomScale)
                self.imageView.center = CGPoint(x: scrollView.contentSize.width / 2, y: scrollView.contentSize.height / 2)
            }
        }
        private func setupCanvasView() -> PKCanvasView {
            let canvasView: PKCanvasView = PKCanvasView(frame: self.view.frame)
            canvasView.delegate = self
            canvasView.maximumZoomScale = 5.0
            canvasView.isOpaque = false
            canvasView.backgroundColor = .clear
            canvasView.contentOffset = CGPoint.zero
            canvasView.contentSize = self.view.frame.size
            canvasView.tool = PKInkingTool(.pen, color: .white, width: 30)
            // PKToolPicker: ドラッグして移動できるツールパレット (ペンや色などを選択できるツール)
            if let window = UIApplication.shared.windows.first {
                if let toolPicker = PKToolPicker.shared(for: window) {
                    toolPicker.addObserver(canvasView)
                    toolPicker.setVisible(true, forFirstResponder: canvasView)
                    canvasView.becomeFirstResponder()
                }
            }
            return canvasView
        }
        private func setupImageView() -> UIImageView {
            let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
            imgView.image = UIImage(named: "image.jpg[![画像の説明をここに入力][1]][1]")
            imgView.contentMode = UIView.ContentMode.scaleAspectFit
            return imgView
        }
    }
    
[/code]

画像の説明  
dataと上に書いてあるものがテキスト、真ん中の画像がimageViewです。


CC BY-SA 4.0
2020-10-14T13:25:53.713
71194
2020-10-17T07:44:46.707
2020-10-17T07:44:46.707
41502
41502
question
swift firebase uikit
Firebaseに画像とテキストの情報がアップロードされない