我正在构建一个类似于Snapchat的解决方案(研究目的)。这个想法是将一张图片发送给另一个可以打开它的人。信息被保存到Firebase-Realtime-Database中,一旦接收方单击,就会显示该图像。
我使用的是Xcode11.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的URL可以正常工作(我可以复制/粘贴到我的浏览器并下载图片)。
以下是上述代码的结果: file:/// (“url 1 (url) - end") result 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- end
print(“URL2 (snap.urlImage) - end") 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 - end
如您所见,在使用URL(fileURLWithPath: snap.urlImage)之后,“-- url”常量的末尾会添加一个“--url”。
如果我在sd_setImage行中将url替换为snap.urlImage,它将不起作用(imagem.sd_setImage(with: snap.urlImage)...)
有谁知道发生了什么事吗?
谢谢
发布于 2019-10-17 01:14:31
init(fileURLWithPath path: String)初始化一个新创建的文件URL,该文件URL引用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
}另外,为了提高可读性,我建议使用不同的var名称。urlImage听起来像是图像或NSImage,而不是路径。imageUrl会是一个更好的名字,因为它是图像的url。
https://stackoverflow.com/questions/58414082
复制相似问题