Swift 如何将数据上载到firebase存储,然后下载到另一个视图控制器

Swift 如何将数据上载到firebase存储,然后下载到另一个视图控制器,swift,firebase,download,upload,firebase-storage,Swift,Firebase,Download,Upload,Firebase Storage,您好,我是Firebase的新手,我一直在努力提高我的编码技能,我已经建立了Firebase存储并将其链接到我的应用程序。到目前为止,我已经成功地将图像上传到存储数据库,我可以在firebase控制台中看到该数据库。我的目标是在上传图像后,单击一个按钮,然后切换到另一个视图控制器,然后自动下载图像以显示给用户 现在,在控制台中,我不断收到“success”消息,但图像不显示。我还尝试了一种协议/委托方法来克服这一问题,通过这种方法,我覆盖了segue func,并在原始VC中创建了一个委托,作为

您好,我是Firebase的新手,我一直在努力提高我的编码技能,我已经建立了Firebase存储并将其链接到我的应用程序。到目前为止,我已经成功地将图像上传到存储数据库,我可以在firebase控制台中看到该数据库。我的目标是在上传图像后,单击一个按钮,然后切换到另一个视图控制器,然后自动下载图像以显示给用户

现在,在控制台中,我不断收到“success”消息,但图像不显示。我还尝试了一种协议/委托方法来克服这一问题,通过这种方法,我覆盖了segue func,并在原始VC中创建了一个委托,作为对应该显示图像的endGame view控制器的引用。我仍然无法下载和显示图像。有谁能告诉我,如何将图像和任何类型的数据下载到另一个视图控制器?另外,有人知道我如何将字符串信息上传到存储器并下载吗

任何帮助都将不胜感激,干杯

上传数据代码:-

    let refToStorage = Storage.storage().reference(withPath: "personalPhoto/profilePhoto.jpg")
        guard let imageData = self.profileImageView.image?.jpegData(compressionQuality: 0.75) else { return }
        let uploadMetadata = StorageMetadata.init()
        uploadMetadata.contentType = "image/jpeg"

        refToStorage.putData(imageData, metadata: uploadMetadata) { (StorageMetadata, Error) in
            if Error != nil {
                print(Error!)
                print("No still didnt work")
            }   else {
                print("Image was uploaded, I got this \(String(describing: StorageMetadata))")
            }
        }
    let storageRef = Storage.storage().reference(withPath: "personalPhoto/profilePhoto.jpg")

    storageRef.getData(maxSize: 4 * 1024 * 1024) { (data, Error) in
        if Error != nil {
            print("Error, \(Error?.localizedDescription)")
        }   else {
            print("Yes")
            self.downloadPersonalImage.image = UIImage(data: data!)
        }
    }
下载数据代码:-

    let refToStorage = Storage.storage().reference(withPath: "personalPhoto/profilePhoto.jpg")
        guard let imageData = self.profileImageView.image?.jpegData(compressionQuality: 0.75) else { return }
        let uploadMetadata = StorageMetadata.init()
        uploadMetadata.contentType = "image/jpeg"

        refToStorage.putData(imageData, metadata: uploadMetadata) { (StorageMetadata, Error) in
            if Error != nil {
                print(Error!)
                print("No still didnt work")
            }   else {
                print("Image was uploaded, I got this \(String(describing: StorageMetadata))")
            }
        }
    let storageRef = Storage.storage().reference(withPath: "personalPhoto/profilePhoto.jpg")

    storageRef.getData(maxSize: 4 * 1024 * 1024) { (data, Error) in
        if Error != nil {
            print("Error, \(Error?.localizedDescription)")
        }   else {
            print("Yes")
            self.downloadPersonalImage.image = UIImage(data: data!)
        }
    }

祝你进步!几个问题;您是否正在上载文件、切换到另一个viewController并尝试在同一过程中下载文件?若然,原因为何?如果文件刚刚上载,则无需下载,因为您已将该文件保存在另一个viewController的内存中。此外,上载文件时,您需要将其URL存储在数据库中,以便将来可以使用该URL访问该文件。请看一下上传指南,并注意代码部分,您可以在其中获取url//您还可以在上传后访问下载url。哦,小心使用var名称。此(存储元数据,错误)应为此(元数据,错误)。大写字母用于类和结构名称,而变量应小写,且名称与类名不完全相同。这避免了混乱。下载的代码看起来是正确的-我复制并粘贴到我的应用程序中,它就工作了。您的问题是打印“成功”,但如果成功,代码应该打印“是”。是打印“是”吗?如果是这样,请查看
self.downloadPersonalImage.image
,因为这可能是无效的,或者可能隐藏在反馈信息的U感谢中!切换到新的视图控制器时,我设法将信息从存储器下载到新的视图控制器上!