我正在用最新的SDK和XCode 4.5.2开发一个XCode应用程序。
这个问题可能对任何移动平台都有效。
我需要连接到一个网络服务,当应用程序明星和下载一些信息。此信息可能在服务器上更改:可以删除、更新或插入某些寄存器。
我的问题是我不知道该把这些信息储存在哪里。我觉得把它存储在设备内存里是个坏主意。我认为最好将其存储在文本文件或数据库中。你觉得呢?
我还有一个问题是:,我怎么知道服务器上是否有一些数据被更改了?,我认为每次用户星星应用程序都下载相同的数据是个坏主意。
如果我想这样做,连接到星光向上的web服务,当屏幕显示的时候。,我必须把代码放在AppDelegate?上
欢迎任何建议。
发布于 2013-01-21 02:35:31
,我必须把代码放在AppDelegate?上
在AppDelegate中使用代码不是一个好主意。相反,您可以有一个viewController作为启动屏幕。将此viewController设置为rootViewController。在这里执行您的初始web服务调用,并在完成它之后,移动到应用程序的第一个屏幕。
如何知道某些数据是否已在服务器上更改?
您将不得不与服务器通信您的数据版本。因此,在服务器端为数据设置版本号,并在下载数据时跟踪它。因此,如果在调用web服务时将版本号传递给服务器,服务器可以决定是否有任何可用的新数据。这样,您就可以避免下载已经下载的数据。
在哪里存储这些信息?
这取决于要存储的数据大小。以及它的安全性。我认为使用像Sqlite3这样的数据库是一个很好的选择。
希望这能有所帮助。
发布于 2013-01-21 04:09:37
,我必须把代码放在AppDelegate?上
这取决于您的应用程序的行为,您决定从哪里下载数据。通常情况下,如果您的应用程序每次进入新视图时都要显示最新的数据,那么当访问该视图时,应该下载该数据。这样,您将始终向用户显示最新的可用数据。
您通常会避免将过多的应用程序: didFinishLaunchingWithOptions:,特别是网络连接,因为您不知道用户可能有什么样的连接。如果连接需要很长的时间和应用程序: didFinishLaunchingWithOptions:需要太长时间才能返回,iOS会因为打开时间太长而扼杀应用程序,这对用户体验毫无好处。
如何知道某些数据是否已在服务器上更改?
您将希望在服务器的响应头中传递最后修改的时间戳或etag。当您从服务器获得报头响应时,您可以对照之前收到的上次修改过的数据进行检查,或者如果etag不同,您就知道数据已经更改了。这样做比下载所有的主体来检查单个参数要快得多,如果这个参数没有改变,那么您就下载了一堆数据。我反对版本控制,版本控制更多地用于API更改,而不是检查数据是否过时。
存储位置?
这取决于您将要下载的数据的数量,但我建议您通常使用核心数据。将数据存储到文件中,然后保存该文件的问题是,每次打开应用程序时,您都必须将这些数据分解为一些有用的数据,然后再进行搜索等等。有了核心数据,您就可以使用完整的对象进行搜索,而不是使用NSPredicate,这使得从长远来看,一切都要简单得多。
如果您只是下载一些设置,那么您可以使用类似文件或NSUserDefaults之类的内容,但是如果要向用户显示列表或数据集合,最好使用核心数据。
发布于 2013-01-21 03:04:57
如何知道某些数据是否已在服务器上更改?
还可以在应用程序和服务器中使用可变版本。在下载数据之前,用API和compere两个版本发送应用程序变量版本。
,我必须把代码放在AppDelegate?上
可以根据您的需求使用applicationDidBecomeActive或didFinishLaunchingWithOptions。
- (void)applicationDidBecomeActive:(UIApplication *)application
或
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在哪里存储该信息
根据数据的大小和需求,您可以决定将数据保存在何处。
https://stackoverflow.com/questions/14436380
复制