使用Swift和Firebase上传照片

问题描述 投票:0回答:1

我在上传照片作为个人照片时遇到一些困难。这是我的代码的一些设置。这就是我设置用户类的方式。

import UIKit
import FirebaseStorage
import FirebaseDatabase
import FirebaseAuth
class Users: NSObject {
    var username : String = ""
    var email : String = ""
    var uid : String = ""
    var profilePicLink : String
    init(username : String, email: String, uid : String, profilePicLink: String ) {
        self.username = username
        self.email    = email
        self.uid      = uid
        self.profilePicLink = profilePicLink
    }
    func getProfileImage() -> UIImage {
        if let url = NSURL(string: profilePicLink){
            if let data = NSData(contentsOf: url as URL) {
                return UIImage(data: data as Data)!
            }
        }
        return UIImage()
    }
    func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let storageRef = Storage.storage().reference().child("user/\(uid)")

    guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"

    storageRef.putData(imageData, metadata: metaData) { metaData, error in
        if error == nil, metaData != nil {

            storageRef.downloadURL { url, error in
                completion(url)
                // success!
            }
            } else {
                // failed
                completion(nil)
            }
        }
    }

  }

在SettingView类中,我调用了func uploadProfileImage,但是,出现错误“源文件中的编辑器占位符”。请在函数uploadPhoto int setview类中建议完成时应传递什么值]

import UIKit

class SettingView: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate {

    @IBOutlet var imageView: UIImageView!

    @IBOutlet var displayName: UILabel!
    var selectedUser:Users?

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(displayName.text == selectedUser?.username)
    }
    @IBAction func getPhotoButton(_ sender: Any) {
        let image = UIImagePickerController()
        image.delegate = self
        image.sourceType = UIImagePickerController.SourceType.photoLibrary
        self.present(image, animated: true, completion: nil)
    }
    @IBAction func updatePhoto(_ sender: Any) {
        uploadPhoto()
    }
    func uploadPhoto(){
        selectedUser?.uploadProfileImage(imageView.image!, completion: <#(URL?) -> ()#>) **Error : Editor placeholder in source file**

    }
    private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let pickerInfo: NSDictionary = info as NSDictionary
        let img : UIImage = pickerInfo.object(forKey: UIImagePickerController.self) as! UIImage
        imageView.image = img
        self.dismiss(animated: true, completion: nil)
    }

我在上传照片作为个人照片时遇到一些困难。这是我的代码的一些设置。这就是我设置用户类的方式。导入UIKit导入FirebaseStorage导入...

swift firebase
1个回答
0
投票

XCode抱怨,因为您在completion: <#(URL?) -> ()#>)方法中具有编辑器占位符uploadPhoto。将此替换为uploadPhoto方法:

© www.soinside.com 2019 - 2024. All rights reserved.