CoreData + NSFetchedResultsController vs sqlite速度

时间:2013-11-07 09:29:56

标签: ios sqlite core-data

我有一个关于sqlite的问题,我在这里找不到答案也许你可以回答我或在这里发表一篇文章,这对像我这样的许多其他新开发者都会有所帮助。

问题是关于使用sqlite和CoreData时的速度。

当我们使用CoreData时,我们可以使用NSFetchedResultsController,它可以更有效地使用内存。

当我们使用sqlite时,没有NSFetchedResultsController这样的东西,在我看来有两种方法:

  1. 在某个数组中的viewDidLoad中加载sqlite数据库中的所有数据,然后在tableView中使用此数组:cellForRowAtIndexPath:使用indexPath.row作为数组索引显示数据 - 在我的脑海中加载所有数据坏主意

  2. 在viewDidLoad中获取行数以在numberOfRowsInSection中使用它,然后只在tableView中加载所需数据:cellForRowAtIndexPath:使用类似查询[NSString stringWithFormat:“select id,myTable limit 1 offset%d”,indexPath .row];

  3. 2是一个好主意还是每次都对sqlite进行查询来显示数据是个坏主意?如果没有,哪种方式使用更快?

    谢谢。

2 个答案:

答案 0 :(得分:0)

我认为这取决于您的数据大小。

如果尺寸很小,方式1会更好。

如果你必须使用sqlite,为什么不能一次加载30行,当你可以显示20行时,当你发现用户滚动到第25行时,你再加载30行。这样的事情。

我更喜欢核心数据。

答案 1 :(得分:0)

您希望使用滑动数组样式缓存并使用1以外的限制,这样您就不会经常执行提取。因此,如果您要求缓存中的某行并且它不存在,那么您需要在N行块中读取,以期需要进一步滚动。

或者不是一次一个类重新发明CoreData,只使用CoreData和NSFetchedResultsController。 :)