当sqlite表更新时,有什么方法可以通知吗?

时间:2016-02-06 13:18:44

标签: objective-c sqlite core-data nsfetchedresultscontroller fmdb

我正在开发一个在FMDB的帮助下使用sqlite数据库的iOS应用程序。我曾经使用过Core Data,但是一次插入5000个项目的速度很慢。事务FMDB使得这样的插入更快!

此外,我需要一些机制,可以在更新sqlite表中的某些项时通知我的视图控制器。 NSFetchedResultsController是我的解决方案,但由于我使用FMDB,我无法再使用NSFetchedResultsController

当sqlite表更新时是否有任何通知方法?

2 个答案:

答案 0 :(得分:1)

我的建议是恢复核心数据。您应该解决插入性能问题,而不是降低到数据库级别,并且必须重新访问数据模型设置的各种更复杂的机制。您的具体问题就是一个例子。

要优化插入速度,请参考众多有用的SOF答案。正如已经指出的那样,为您的数据类型找到正确的批量大小是关键。

但是,无论您的优化如何,您都可以利用Core Data框架在后台执行这些密集型操作。这不会影响您的应用程序的可用性,大概甚至比使用FMDB的0.7秒插入更少。

答案 1 :(得分:0)

我一直在寻找一个解决方案。我想知道为什么我早些时候没有找到它。

我现在的选择是YapDatabase。我不知道它的弱点,但这个图书馆有很多很棒的东西:

  • 定期更新。有超过1000个提交!哇!
  • 它是键/值商店。我只是保存我的NSDictionaries。没有更多的数据模型和头痛。
  • 性能很棒。我已经比较了Core Data delete + insert speed。
  • 最棒的是" 观点":
  

观看次数允许您排序,分组和放大过滤您的数据。完美的   tableViews,collectionViews等。他们甚至提供   NSFetchedResultsController样式更新,以便于动画   对tableViews / collectionViews的更改。