swift - URL(fileURLWithPath : snap. urlImage) 命令未按预期工作

标签 swift firebase firebase-storage

我正在构建(研究目的)一个类似于 Snapchat 的解决方案。这个想法是将图片发送给另一个可以打开它的人。信息被保存到 Firebase-Realtime-Database,一旦接收者点击,就会显示该图像。

我正在使用 Xcode 11.2、Swift4、IOS13、macOS Catalina、SDWebImage (5.2.3)

override func viewDidLoad() {
super.viewDidLoad()

details.text = snap.description

let url = URL(fileURLWithPath: snap.urlImage)
print("URL 1 \(url) - end")
print("URL 2 \(snap.urlImage) - end")

imagem.sd_setImage(with: url) { (image, error, cache, url) in
 print("Message 1")
}

}

保存到 Firebase 的网址正常且工作正常(我可以复制/粘贴到浏览器并下载图片)。

下面是上面代码的结果: print("URL 1 (url) - 结束") 结果 https://firebasestorage.googleapis.com/v0/b/snapchat-xxxxx.appspot.com/o/images%252FBA5008FB-7D2E-4091-B995-E37879EAB1A2.jpg%3Falt=media&token=72146333-fe8e-4add-be52-1caf037cd1d6 -- 文件:///- 结束

print("URL 2 (snap.urlImage) - 结束") https://firebasestorage.googleapis.com/v0/b/snapchat-xxxxx.appspot.com/o/images%2FBA5008FB-7D2E-4091-B995-E37879EAB1A2.jpg?alt=media&token=72146333-fe8e-4add-be52-1caf037cd1d6 - 结束

如您所见,使用 URL(fileURLWithPath: snap.urlImage) 后,“--file:///”会添加到“url”常量的末尾。

如果我在 sd_setImage 行中用 snap.urlImage 替换 url,则它不起作用 (imagem.sd_setImage(with: snap.urlImage)...)

有人知道发生了什么吗?

谢谢

最佳答案

init(fileURLWithPath path: String)

Initializes a newly created file URL referencing the local file or directory at path

init(fileURLWithPath:) 将传入的字符串解释为本地文件路径,我认为您不想要它。例如,如果您想将该文件写入本地磁盘,则可以使用它。

您实际上要查找的是服务器上文件的 url 路径。

let urlToImage = URL(string: snap.urlImage)

请记住,这将返回一个可选值,因此最好像这样保护您的代码

if let urlToImage = URL(string: snap.urlImage) {
   imagem.sd_setImage(with: urlToImage)...
} else {
   print("could not find file at that url") //or some other error
}

另外,为了可读性,我建议使用不同的变量名称... urlImage 听起来像是一个 Image 或 NSImage,而不是路径。 imageUrl 是一个更好的名称,因为它是图像的 url

关于swift - URL(fileURLWithPath : snap. urlImage) 命令未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58414082/

相关文章:

ios - 从 Firebase 更新或删除数据时数组索引出错

flutter 错误: Invalid argument(s): No host specified in URI Instance%20of%2 0'Future%3CString%3E'

html - firebase Google 云存储下载 URL 的文件夹名称变为文件名

node.js - 在 firebase 云函数中,bucket.upload promise 解决得太早

ios - 无法从 URLSessionTaskDelegate 获取数据

ios - 如何使用 PHPhotoLibrary 将视频/图像写入保存的相册?

swift - 我不明白为什么我的控制台中有额外的括号

ios - pickerView 不同的行高

javascript - 使用 Cloud Functions for Firebase 存储图像

javascript - firebase - 不处理来自快照的数据