是否可以直接将数据库/实体加载到CoreData中?该应用程序依赖于数据,初始数据加载是> 100,000件物品。在iPhone 4上完成插入需要大约15分钟,这是一个令人不快的长时间。
我有什么办法可以:
感谢。
答案 0 :(得分:1)
使用CoreData创建数据库并将其添加到项目包中,然后在第一次加载时,将数据库从包复制到文件系统,以便它可写,然后从那里打开它。您可能希望将数据库标记为不根据需要与iCloud共享。
答案 1 :(得分:1)
是的,这是可能的。 “正常”方法是预构建数据库,将其作为资源包含,检查启动时是否在文档文件夹中有数据库,如果没有,则从包中复制它。
我通常运行我的代码在模拟器上构建数据库,然后从sim文件夹中复制它并添加到我的项目资源中。
答案 2 :(得分:0)
通过应用程序包复制预先制作的Core Data生成的sqlite文件是一个好主意,即使我觉得它有点麻烦。如果你有静态数据存储和动态数据存储,这是最有意义的 - 在大多数情况下,复制静态数据是可行的。
但是,据记载,15分钟是荒谬的。我可以保证你可以把它减少到几秒钟。
我已经能够在第一代iPad上在不到30秒的时间内完成500K插入。最重要的优化技术是:
@autoreleasepool
,