gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:34:21 25 4
gpt4 key购买 nike

我正在构建(研究目的)一个类似于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com