【发布时间】:2020-08-06 19:21:06
【问题描述】:
大家好,我无法通过链接或路径从我的数据库中下载图像。所有链接都是正确的,它们在应用程序中也是正确的。调试器中没有任何错误,我的代码看起来像文档示例。 我无法解决这个问题 2 天,我的朋友或来自 swift 聊天的人中没有人能帮助我。 http 链接示例:...firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token...
let urlText = modelArray[indexPath.row].imageURL
print(urlText) //here is a print
let ref = Storage.storage().reference(forURL: urlText)
let megabyte = Int64(1 * 1024 * 1024)
ref.getData(maxSize: megabyte) { data, error in
guard let imageData = data else { return } //1st breakpoint
let image = UIImage(data: imageData) //2nd break
cell.itemImageView.image = image!
imageUrl 是通过复制粘贴从 FirebaseStorage 获得的。此链接打印正确。我设置了 2 个断点来解决问题,这就是我从 lldb 得到的:
(lldb) expr error (Error?) $R2 = domain: "FIRStorageErrorDomain" - code: 18446744073709538595 { _userInfo = 0x000060000078e2c0 }
(lldb) expr data (Data?) $R0 = nil - 数据为零!我在互联网上找不到此错误的解决方案。
按路径下载图像也不起作用。问题是一样的。数据库中的所有其他内容都很好。
所有印刷品:
https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F6.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F1.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F6.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F1.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F14.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F30.png?alt=media&token=xxxx 2020-08-08 00:04:00.356154+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist 2020-08-08 00:04:00.650564+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60301000 started 2020-08-08 00:04:00.861852+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see xxxx) 2020-08-08 00:04:01.149822+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS800023] No pending snapshot to activate. SDK name: app_measurement 2020-08-08 00:04:02.406372+0300 pFood[24374:1517487] 6.19.0 - [Firebase/Analytics][I-ACS800003] Registered an SDK that has already registered. Default flags will be overwritten. SDK name: app_measurement 2020-08-08 00:04:02.511475+0300 pFood[24374:1517497] 6.19.0 - [Firebase/Analytics][I-ACS800023] No pending snapshot to activate. SDK name: app_measurement 2020-08-08 00:04:10.454503+0300 pFood[24374:1517594] 6.19.0 - [Firebase/Analytics][I-ACS023012] Analytics collection enabled
我尝试了 @Jay 的代码,我的控制台看起来像 gs://pfood-5b1eb.appspot.com/menu/1.png. User does not have permission to access 这是一个火力基础问题,我们将与团队一起修复它。
对不起,我的英语不好。这是我的第一个案例。我积极检查 cmets 和答案。感谢您的任何反馈。
【问题讨论】:
-
嗨,埃米尔,欢迎您!首先,您应该通过文本而不是图像来共享您的代码。除此之外,我的疯狂猜测是该参考文献消失了,因为它是本地参考文献。那么,现在是否正在调用完成块?
-
“我不能”有点不清楚。如果在回调
guard let imageData = data else { return }的第一行设置断点,它会到达那个点吗?如果有,是否有error?如果没有,有没有data? -
@FrankvanPuffelen 这是一个 lldb 对话
(lldb) expr data (Data?) $R0 = nil和错误内容(lldb) expr error (Error?) $R2 = domain: "FIRStorageErrorDomain" - code: 18446744073709538595 { _userInfo = 0x000060000078e2c0 } -
问题中确实没有足够的信息。首先,您应该添加一个打印语句,以便您可以检查 imageURL 以确保它是正确的。 url 是从
downloadUrlWithCompletion获得的吗?它是以http:还是gs:开头的?如果没有,您可能需要使用reference(withPath:。更新问题,我们来看看。 -
@Jay 完成编辑感谢您的反馈
标签: swift firebase firebase-storage