2017-11-11 100 views
-2

我有這個代碼,但我有一個問題,因爲它寫我使用未解析的標識符'元數據',在此先感謝!我是Xcode的初學者,請解釋清楚!使用未解析的標識符'元數據'

我從一個YouTube教程中獲得了這個,從zero2launch!

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) 

    } 



} 

回答

1

您初始化matadata而不是元數據(您想使用)在下面的代碼在封閉(第一行: 「(matadata,錯誤)」):

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

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

中的元數據最後一行應該是matadata,或者您必須在第一行更改它。

+0

在教程中,他使用了元數據,我有另一個問題,數據不是JPEG它是.dms,那麼該怎麼辦? – faridorid

+0

?????? @ WR-BikAir – faridorid

+0

嘗試轉換它可能嗎?你有權訪問源代碼? –