我有一个关于在SQLite中存储数据的应用程序的问题。使用FMDB包装器读取数据,如果服务器端数据库更改,必须透明地更新给用户。
为了实现这一点,每当下载新数据库时,我就用一个新对象替换我的单例中的整个FMDatabase
对象。
但是,在一瞬间查询会失败,例如,如果用户当前正在滚动表视图。
那么问题是,我如何在保留当前队列的同时替换当前打开的.sqlite
文件?
是否可以在DB更新的瞬间添加UIActivityIndicatorView
?您可以在传输开始时将其打开,并在回调时将其关闭。
在我看来,您应该将来自SQLite数据库的数据源存储在数组或其他集合中,对吗?
所以,每当你完成从服务器下载更新的数据库,发布一个通知"DatabaseUpdated"。(这段代码应该在你的Shared Singleton中)
并且,让你的视图控制器成为这个通知的观察者。
在收到此通知时,只需在视图控制器中调用[tableView reloadData];
。
因此,实际上,您的视图将根据新的数据库更改而更新。