You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Storage downloadURL()方法已弃用,Xcode 9.3告警问题咨询

解决Firebase Storage downloadURL() 弃用警告的问题

嘿,我来帮你搞定Xcode 9.3弹出的这个Firebase Storage弃用警告!确实,同步的downloadURL()方法已经被官方弃用了,现在推荐用异步的downloadURL(completion:)方法来获取文件下载链接,这样能更好适配网络请求的异步特性。

修改后的完整代码

Storage.storage().reference().child("profile_images").child(fileName).putData(uploadData, metadata: nil) { [weak self] (metadata, uploadError) in 
    guard let strongSelf = self else { return }
    
    // 先处理图片上传阶段的错误
    if let uploadError = uploadError { 
        print("图片上传失败: \(uploadError.localizedDescription)")
        return
    }
    
    // 上传成功后,获取当前文件的Storage引用
    guard let storageRef = metadata?.reference else {
        print("无法获取目标文件的Storage引用")
        return
    }
    
    // 调用异步方法获取下载URL
    storageRef.downloadURL { (url, urlError) in
        // 处理获取URL时的错误
        if let urlError = urlError {
            print("获取下载URL失败: \(urlError.localizedDescription)")
            return
        }
        
        // 成功拿到URL后,执行你的更新逻辑
        guard let profileImageUrl = url?.absoluteString else {
            print("下载URL解析失败")
            return
        }
        ProfilePhotoHandler.Instance.addPhotoUrl(withUrl: profileImageUrl)
    }
}

关键修改点说明

  • 拆分错误处理:把上传错误和获取URL的错误分开处理,调试排查问题更清晰
  • 异步获取URL:不再从metadata同步提取URL,而是通过文件的Storage引用调用官方推荐的异步方法,避免同步操作可能带来的线程阻塞
  • 强化可选值校验:增加了对metadata?.reference的判断,确保能拿到有效文件引用后再请求URL
  • 保持内存安全:继续使用[weak self]和strongSelf避免循环引用,保证内存管理合规

这样修改后,既能消除弃用警告,代码的健壮性也会提升不少哦!

内容的提问来源于stack exchange,提问作者OMGImOut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:08:24