0

我有一个关于 sqlite 的问题,但在这里没有找到答案,也许您可​​以在这里回答我或发表文章,这对像我这样的许多其他新开发人员会有所帮助。

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

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

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

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

  2. 在 viewDidLoad 中获取行数以在 numberOfRowsInSection 中使用它,然后在 tableView:cellForRowAtIndexPath: 中仅加载需要的数据:使用这样的查询 [NSString stringWithFormat: "select id, name from myTable limit 1 offset %d", indexPath.row];

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

谢谢你。

4

2 回答 2

0

您想使用滑动数组样式缓存并使用 1 以外的限制,这样您就不会不断地执行提取。因此,如果您向缓存请求一行但它不存在,您将读取 N 行块以期望需要进一步滚动。

或者不要一次重创 CoreData 一个类,而只使用 CoreData 和NSFetchedResultsController. :)

于 2013-11-20T14:42:45.987 回答
0

I think it depends on your data size.

If the size is small, way 1 would be better.

If you have to use sqlite, why not load 30 rows at once time when you can show 20 rows, then when you find the user scroll to row 25, you load another 30 rows. Something like that.

I would prefer Core Data.

于 2013-11-07T12:38:59.380 回答