关于CoreData
有许多值得关注的事情,但我觉得数据导入不是其中之一。我对您用于导入/升级策略的内容有一些疑问,我很乐意听取您的意见。
关于如何提供初始数据库内容,有一些思想流派。有些人会在第一次运行时从文件中导入数据,而其他人则会提供在首次运行时复制和使用的数据存储 - 这是我个人所做的。如果还有其他选择,我很乐意听到。
我对这些方法的问题是在推送升级时要执行的操作。当您将数据添加/更改/删除到希望现有用户看到的初始数据集时,您会怎么做?
您是否将使用中的数据模型版本存储在NSUserDefaults
中,然后在首次运行新版本时执行一些迁移代码以插入/更新默认数据?我在这里严格谈论数据,而不是架构。所有这一切看起来都很糟糕,因为我可以看到低收视率的浪潮,因为你在编写升级代码时没有想到什么。在CoreData
中存储默认应用程序数据(用户没有真正修改)甚至是一件好事吗?
所以我想我的问题是,您首选的导入策略是什么?在发布未来版本时,您通常如何升级数据?
答案 0 :(得分:1)
如果是未修改的数据,您只需创建商店并将其存储在应用包中。然后,您可以直接从NSBundle
以只读方式打开它。这样你就可以用更新换掉整个商店,并且没有迁移等问题。
答案 1 :(得分:0)
您可以将Core Data创建的sqlite文件复制到您的计算机。修改文件中的数据并将其输出到服务器上。该应用程序可以下载带有更新数据的sqlite文件,并使用它来替换应用程序中Documents文件夹中的sqlite文件。
然后,您必须重置持久性存储和托管对象上下文。我在一个大约有7000条记录的关系数据库中这样做,它就像一个魅力。