我们现在在应用程序商店中有一个使用预先填充的Core Data数据库的应用程序。我们想要更新数据库中的所有表,除了1个表,即用户存储其收藏的公交路线或站点的收藏夹表。目前,我们正在完成此更新,其中app委托使用SQLite C API,NSFileManager执行以下操作:
我想知道是否有另一种方法可以做到这一点,因为我们的应用程序在启动屏幕期间崩溃时出现了很多抱怨,这是数据库复制发生的时间。
我听说过核心数据迁移,但我对核心数据迁移的理解是,您只能在模型更改时迁移数据,但在我们的情况下,模型没有更改。
答案 0 :(得分:1)
为什么不按原样保留数据库,只是根据需要插入/删除数据而不是复制预先填充的数据库?
或者您也可以采取相反的方法:保留原始数据库,使用新名称复制预填充数据库,将原始数据库中的收藏夹插入新数据库,删除原始数据库,现在只使用新数据库。像这样,您始终确定用户的收藏夹没有任何变化。
或者您可以先将收藏夹写入文本文件,然后执行您描述的相同操作。如果发生任何事情(如崩溃),您仍然可以在保存的文本文件中找到收藏夹。
它也可能适用于核心数据迁移,但到目前为止我避免了......任何结构化数据库更改都是我宁愿避免的,我认为......