有没有办法在核心数据数据库已经预填充的情况下部署iOS应用程序?

有没有办法在核心数据数据库已经预填充的情况下部署iOS应用程序?,ios,core-data,Ios,Core Data,我正在尝试发布一个应用程序,该应用程序将使我的核心数据数据库已经预填充了数据。我不希望在第一次启动时以编程方式从资源包中的文件填充数据,因为这样会重复用户设备上的磁盘使用量。例如,如果我的数据存储在一个资源包文件中为250Mb,并且我在第一次启动时使用该文件填充数据库,则原始资源包文件将保留,而数据库现在也保存该数据,从而导致250Mb的冗余磁盘使用 我看过很多教程,展示了如何在第一次启动时“预加载”数据。这不是这个问题的解决方案。您说:我不希望在启动时以编程方式从资源包中的文件填充数据,因为这

我正在尝试发布一个应用程序,该应用程序将使我的核心数据数据库已经预填充了数据。我不希望在第一次启动时以编程方式从资源包中的文件填充数据,因为这样会重复用户设备上的磁盘使用量。例如,如果我的数据存储在一个资源包文件中为250Mb,并且我在第一次启动时使用该文件填充数据库,则原始资源包文件将保留,而数据库现在也保存该数据,从而导致250Mb的冗余磁盘使用

我看过很多教程,展示了如何在第一次启动时“预加载”数据。这不是这个问题的解决方案。

您说:我不希望在启动时以编程方式从资源包中的文件填充数据,因为这样会重复用户设备上的磁盘使用量

你考虑过使用压缩的数据库文件吗

我用以前的应用程序发布了相当大的Cora数据数据库。看见我将它们作为压缩文件(zip)存储在资源包中。425MB SQLite DB压缩后只有96MB

在第一次启动应用程序的过程中,最小的数据库被解压。用户可以选择加载其他数据库

在iPadPro 2(A10X)上:

信息:“ITIS”数据库为140MB(压缩67MB)“ITIS An”数据库为425MB(压缩96MB)


我曾经使用过。

苹果公司关于这个主题的文档有点旧,但它仍然存在,并且是相关的。这个主题也有一些博客。一种看似合理的方法(我还没有尝试过)是将两个持久存储添加到一个协调器中,即种子存储只读和永久存储读写。添加到单个上下文,保存,然后将所有数据持久化到永久读写存储区。最后从捆绑包中删除种子存储。您不能从捆绑包中删除种子存储,捆绑包是只读的@andrewz,如果你想将数据与应用程序一起交付,你就不能真正避免将数据副本放在捆绑包中,并将副本放在磁盘上。您可以在第一次启动时从网络位置传输初始数据。这听起来是一个合理的选择。