如何替换当前打开的FMDB数据库,保留当前队列



我有一个关于在SQLite中存储数据的应用程序的问题。使用FMDB包装器读取数据,如果服务器端数据库更改,必须透明地更新给用户。

为了实现这一点,每当下载新数据库时,我就用一个新对象替换我的单例中的整个FMDatabase对象。

但是,在一瞬间查询会失败,例如,如果用户当前正在滚动表视图。

那么问题是,我如何在保留当前队列的同时替换当前打开的.sqlite文件?

编辑:查询经常对数据库运行,例如,当滚动视图时,有count()s,所以没有简单的方法来"阻止"用户与数据库进行交互。

是否可以在DB更新的瞬间添加UIActivityIndicatorView ?您可以在传输开始时将其打开,并在回调时将其关闭。

在我看来,您应该将来自SQLite数据库的数据源存储在数组或其他集合中,对吗?

所以,每当你完成从服务器下载更新的数据库,发布一个通知"DatabaseUpdated"。(这段代码应该在你的Shared Singleton中)

并且,让你的视图控制器成为这个通知的观察者。

在收到此通知时,只需在视图控制器中调用[tableView reloadData];

因此,实际上,您的视图将根据新的数据库更改而更新。

最新更新