ios - Swift - 使用 CoreData 从数据库预加载和更新数据

标签 ios swift database core-data

我有一个包含产品的大型数据库。我想在 iOS 应用程序启动时从数据库中获取所有产品,然后使用 CoreData 保存和重组数据,你明白了吗?

但是,数据库中的产品,尤其是价格可能会在不同日期发生变化。因此,我认为每次打开应用程序时都需要预加载数据。这将需要一段时间,尤其是在网速较慢的情况下。请问有没有更好的解决办法?

谢谢, 卡斯帕

最佳答案

想想哪些数据会改变,哪些数据不会...

考虑将您的数据分成几组 - 定期更改的组、不经常更改的组和从不更改的组。

然后您就可以根据组为您的应用上传数据。

什么数据可以一次上传:

  • 产品名称?
  • 产品图片?

每天可能上传哪些数据:

  • 产品价格?

哪些数据可能不经常上传:

  • 产品描述?
  • 产品图片(当这些改变时)?

也许还会上传新产品?

我建议您考虑使用缩略图和全尺寸图像。

作为指南,缩略图应具有较小的尺寸和文件大小……可能为 300 x 300 像素且小于 150kb。缩略图可以使用 Core Data 保存为 Data 类型(在 SQLite 中作为 blob 保存)。

可以使用 Core Data 保存全尺寸(大文件大小)图像,但是有不同的方法可以实现这一点。

SO 和其他网站上有很多关于使用 Core Data 存储大文件大小图像的文章。

我的偏好是将图像文件保存到应用程序沙箱中的自定义应用程序目录/文件夹中,该目录/文件夹未备份我的 iTunes 或 iCloud,并将对该图像文件的引用(作为文件路径)保存为 Core Data 模型中的 String 属性。通过这种方式,您可以在本地持久保存图像文件,并仅在必要时上传更改。

因此,通过使用不同的数据组,您还可以将上传内容分成 block ……那些需要的:

  • 一旦应用程序运行(例如产品名称);
  • 在应用生命周期的早期(例如缩略图);
  • 在背景中(例如全尺寸图像)。

关于ios - Swift - 使用 CoreData 从数据库预加载和更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682970/

相关文章:

ios - 如何将图标添加到 iOS 通知

database - 是否有 p2p 数据库实现

Mysql:选择相对于第二个表

php - 使用 implode 函数在表格的一列中插入多个复选框

ios - 禁用 UITextField 编辑但仍接受触摸 - Swift 3

iphone - NSDate 1 年前

ios - 使用 Vision 框架时在 Xcode 中获取控制台垃圾邮件并且脸部移出屏幕

iphone - 在 iPhone 中获取 Facebook/Twitter 好友的 Foursquare 位置。

ios - Apple 对 http 直播应用程序的政策

ios - 显示从 url 到 Collection View Swift 单元格的 3 张图像