移动应用数据管理

Nit*_*ish 9 sqlite uitableview mobile-application data-management ios

我的问题围绕着一个单一点 - 移动应用程序中的数据管理.我创建了一个移动应用程序,其中数据来自服务器.数据包括文本和图像.以下是我为此所做的步骤:

首次启动:
1.获取服务器数据.
2.在Sqlite数据库中保存服务器数据.
3.显示Sqlite数据.

接下来启动:
1.显示Sqlite数据.
2.在后台获取服务器数据.
3.删除以前的Sqlite数据.
4.在Sqlite数据库中保存新的服务器数据.
5.显示Sqlite数据.

关于这些步骤我有几个问题:
1.这是正确的方法吗?其他方式可能是每次从服务器显示数据,但不会立即在屏幕上显示数据(取决于互联网速度).
我还想过将Sqlite数据与新的服务器数据进行比较.但面临着巨大的挑战.新服务器数据可能具有新记录或已删除记录.另外,我找不到合适的方法来比较每个数据库字段和JSON数据.
那么将本地Sqlite数据与新服务器数据进行比较的最佳方法是什么?
3.每次我删除Sqlite数据并插入新数据然后刷新屏幕(有a UITableView)时,它会闪烁一秒钟,这很明显.如果遵循步骤3,4,5,如何避免此问题?
4. 如果我每次或当应用程序变为活动状态时返回屏幕,我应该如何进行数据更新?我非常了解NSOperationQueues或使用GCD此事.但是如果我疯了又一次又一次地来回屏幕怎么办?NSOperations队列中会有一些.

Tia*_*ira 2

同步服务器数据是一个挑战,我以前做过,如果你能花时间在这上面,我会说这是最好的解决方案。

您可能需要服务器和本地对象上的创建和修改日期来比较它们 - 这将让您决定添加、更新和删除哪些对象。如果服务器仅向您发送最近更新的对象,您可以节省大量流量并提高性能(但已删除的对象将更难以检测)。

如果数据仅在服务器中更改,那就更容易了,当应用程序也可以更改数据时,它就会变得更加复杂(但似乎这不是你的情况)。当然,这还取决于数据库的复杂程度。

如果您不想花一些时间来做这件事,那么每次都获取所有数据也可以,即使它并不理想!您可以让用户在输入时等待 2-3 秒,然后获取新数据,而不是显示旧数据并使其闪烁。或者,您只能在启动应用程序时获取数据,因此当您到达该视图控制器时,它已经准备好了。

这是每个人在某些时候都会面临的一个复杂问题,所以我很好奇其他人会提出什么建议:)