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
相关产品推荐
相关产品推荐

