2

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

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

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

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

编辑:查询经常针对数据库运行,例如在滚动视图时有 count()s,因此没有简单的方法可以暂时“阻止”用户与数据库交互。

4

2 回答 2

1

UIActivityIndicatorView在数据库更新的那一瞬间添加一个可以吗?您可以在传输开始时将其打开,并在回调时将其关闭。

于 2012-12-26T19:32:14.240 回答
1

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

因此,每当您完成从服务器下载更新的数据库时,请发布“DatabaseUpdated”通知。(此代码应该在您的共享单例中)。

并且,让您的视图控制器成为此通知的观察者。

收到此通知后,只需调用[tableView reloadData];您的视图控制器。

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

于 2012-12-28T06:02:30.027 回答