【问题标题】:Use of unresolved identifier 'metadata'使用未解析的标识符“元数据”
【发布时间】:2017-11-11 18:57:28
【问题描述】:

我有这段代码,但我有一个问题,因为它写给我使用未解析的标识符“元数据”,提前致谢!我是Xcode的初学者,请解释清楚!

我从 zero2launch 的一个 youtube 教程中得到了这个!

import UIKit
import FirebaseDatabase
import FirebaseAuth
import FirebaseStorage




class SignUpViewController: UIViewController {

    @IBOutlet weak var ProfileImage: UIImageView!
    @IBOutlet weak var UsernameField: UITextField!
    @IBOutlet weak var PasswordField: UITextField!
    @IBOutlet weak var Mailfield: UITextField!

    var selectedImage: UIImage?

    @IBAction func dismiss_onClick(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()



        ProfileImage.layer.cornerRadius = 40
        ProfileImage.clipsToBounds = true

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.handleSelectProfileImageView))
        ProfileImage.addGestureRecognizer(tapGesture)
        ProfileImage.isUserInteractionEnabled = true





    }

    @objc func handleSelectProfileImageView() {
        let pickerController = UIImagePickerController()
        pickerController.delegate = self
        present(pickerController, animated: true, completion: nil)


    }


    @IBAction func SignUpButton(_ sender: Any) {
        Auth.auth().createUser(withEmail: Mailfield.text!, password: PasswordField.text! , completion:{(user: User?, error:Error?) in
            if error != nil {
                print(error!.localizedDescription)
                return
            }

            let uid = user?.uid
            let storageRef = Storage.storage().reference(forURL: "gs://gibble-2bed4.appspot.com").child("profile_image").child(uid!)
            if let profileImg = self.selectedImage, let imageData = UIImageJPEGRepresentation(profileImg, 0.1){
                storageRef.putData(imageData, metadata: nil, completion: { (matadata, error) in
                if error != nil{
                    return
                }

                let profileImageUrl = metadata?.downloadURL()?.absoluteString

                let ref = Database.database().reference()
                let usersReference = ref.child("users")
                let newUserReference = usersReference.child(uid!)
                newUserReference.setValue(["username" : self.UsernameField.text!, "email": self.Mailfield.text!, "profileImageUrl": profileImageUrl])


            })

            }


            })







    }

    }




extension SignUpViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
       print("did Finish picking Media")
        if let image = info["UIImagePickerControllerOriginalImage"] as? UIImage{
            selectedImage = image
            ProfileImage.image = image
            dismiss(animated: true, completion: nil)

        }
        print(info)

    }



}

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    您在以下代码的闭包中初始化了 matadata 而不是元数据(您想要使用)(第一行:“(matadata,error)”):

     storageRef.putData(imageData, metadata: nil, completion: { (matadata, error) in
     if error != nil{
         return
     }
    
     let profileImageUrl = metadata?.downloadURL()?.absoluteString
    

    最后一行的元数据应该是元数据,否则你必须在第一行更改它。

    【讨论】:

    • 在教程中他在两者中都使用了元数据,我还有一个问题,数据不是JPEG而是.dms,那该怎么办?
    • 尝试转换它可能吗?您可以访问源代码吗?
    • 要将其保存到数据库中,您必须将其转换为数据,然后再将其转换回来,以显示它。也许这有帮助:stackoverflow.com/questions/33822241/…
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2016-07-17
    • 2016-04-29
    相关资源
    最近更新 更多