在我们的应用程序中,我们下载了大约48个sqlite文件,每个文件大小约为300kb,并将其保存到磁盘中。当用户进入模块时,基于某些条件读取并显示来自任何文件的数据的子集。当用户在模块中滚动时,当滚动视图停止滚动时,我们确定它停止的位置,并相应地查询相应的sqlite文件以获取数据并在屏幕上显示。这需要大约2秒来向用户显示数据。 我们希望对此进行优化,并且我已经读过查询CoreData而不是sqlite文件可以使这更快。
所以,问题是,我们应该尝试将每个sqlite文件中的数据放入CoreData,然后始终查询CoreData。我担心的是,由于我们有48个文件,所以需要以这种方式插入太多数据。另一种方法是只将获取的数据子集加载到CoreData而不是所有文件。但这意味着在显示数据之前,我们确定它是否已在CoreData中获取并可用,否则我们查询sqlite。 关于什么是更好的方法的任何建议?
答案 0 :(得分:1)
根据您提供的信息量,无法真正了解Core Data是否对您的应用程序有意义。你必须为其他任何人提供大量信息才能在这个问题上做出真正明智的选择 - 而这样的决定很重要。
不过,您似乎认为所有数据都必须放在Core Data中的巨大数据库文件中 - 事实并非如此。您可以拥有许多托管对象模型文件(这些是Core Data的最终产品持久数据库文件,名为.xcdatamodeld
)并有选择地打开它们。
您最好的选择是进行一些研究,尝试直接找到Core Data与SQLite之间的关键差异。他们都有自己的位置。核心数据在适当的环境中非常出色 - 它不是关系数据库,它是对象图和持久性管理器,具有重要意义。核心数据已针对月球和背部进行了优化,因此如果您在正确的环境中使用它,它就会很棒 - 性能良好并且需要一些繁重的工作才能阻止您。但在其他情况下,直接使用SQLite将是更好的选择。例如,请参阅this blog post,了解从Core Data切换到SQLite的人。
同时查看this nice article的差异。当然,请阅读Apple自己的指南和wikipedia page。
我们很难回答您提出的问题,但如果您对核心数据的某些更具体方面有疑问,请发布一些新问题 - 这类问题更容易回答。