【发布时间】:2020-03-01 18:35:12
【问题描述】:
我目前正在为 iOS 开发一个应用程序。该应用程序是关于创建一个帐户,然后可以邀请几个朋友加入一个群组。
一旦人们加入了群组,您就可以提交一种“信息”。每个组每天大约会发送 5 次此信息。
信息将显示在“历史”视图中,也就是表格视图。它们会像这样出现在单元格中:
- 成员的图像。
- 一种文字
- 带时间的日期。
在提交表单的那一刻,图片的 Firebase 存储 URL 被发送到 Firebase Realtime,其中数据库保存如下数据类型:imageUrl、文本和日期。
当我从 Firebase 下载数据时,所有图像都会再次下载,我注意到 Firebase 存储非常过载。我超过了每天不到 1 小时的限制。
let memberImagePath = dataArray[indexPath.row].memberImage
cell.memberImage.downloaded(from: memberImagePath)
所以我想知道如何改进这一点?如何使图像只下载一次,然后以不同的方式保存?部分是为了提高应用程序的性能,但也不要超过限制。
我基本上希望所有组成员的图像都放在正确的位置(不仅仅是我自己)。
因为当您在群组中时,群组中的每个成员都可以看到历史记录,其中包括图像、文本和日期。所以不知何故,我需要下载一次图像并将它们保存在不同的地方。
请注意,每次使用都需要更新。就像如果将新成员添加到组中,他/她的图像必须在组中每个人的设备上更新。所以在 UserDefaults 中保存数据可能不是一种选择,对吧?
我希望你明白我在寻找什么。谢谢。
【问题讨论】:
-
您如何将图像转换为数据?您是否将它们保存为PNG? PNG 非常大,无法通过网络发送。您可以在上传图像之前获取图像 JPEG 表示数据和/或按比例缩小它们。您还可以将它们转换为 HEIC 以节省更多数据存储/带宽,但这需要 iOS 11 或更高版本。
-
@LeoDabus 我将它们保存为 JPEG。
-
请注意,您也可以调整它们的大小。您不需要它们的完整尺寸来显示它们。
-
当我从 Firebase 下载数据时,所有图像都会再次下载 - 为什么?而这个 cell.memberImage.downloaded(from: memberImagePath) 不会是一个好的解决方案。 TableView 委托方法应该是快速,代码量最少。如果您在用户滚动表格时尝试下载数据,那将无法正常工作。您需要一次下载一大块数据来填充您的数据源 - 比如说 100 条“记录”,所以分页可能是要走的路。但问题是没有足够的代码来真正理解这个问题。
标签: ios swift firebase firebase-storage