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

Swift URL(fileURLWithPath:snap.urlImage)命令未按预期工作,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,我正在构建(学习目的)一个类似于Snapchat的解决方案。这个想法是将图片发送给另一个可以打开它的人。信息被保存到Firebase实时数据库中,一旦接收者单击,就会显示该图像 我使用的是Xcode 11.2、Swift4、IOS13、macOS Catalina、SDWebImage(5.2.3) 保存到Firebase的URL正常且工作正常(我可以复制/粘贴到浏览器并下载图片) 以下是上述代码的结果: 打印(“URL 1(URL)-结束”)结果 https:/firebasestorage.

我正在构建(学习目的)一个类似于Snapchat的解决方案。这个想法是将图片发送给另一个可以打开它的人。信息被保存到Firebase实时数据库中,一旦接收者单击,就会显示该图像

我使用的是Xcode 11.2、Swift4、IOS13、macOS Catalina、SDWebImage(5.2.3)

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

以下是上述代码的结果: 打印(“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——文件://-end

打印(“URL 2(snap.urlImage)-结束”) -结束

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

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

任何人都会知道发生了什么

谢谢

初始化引用本地文件的新创建的文件URL或 路径处的目录

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
}

另外,为了可读性,我建议使用不同的var名称<代码>URL图像听起来像是图像或NSImage,而不是路径
imageUrl
会是一个更好的名称,因为它是图像的url。

fileURLWithPath
,它是机器中的一条路径(我想你的设备是iPhone)。就像在Mac中一样:
~/Documents
。您需要的是
URL(字符串:snap.urimage)
。“--file:///”已添加到末尾”,但如果您添加了
url.absoluteString
则它位于开头,这就是
url
的打印方式。可能存在重复的感谢Larme。。。那很管用,汉克斯。。。好消息
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
}