我有一种情况,我正在UITableView
使用NSJSONSerialization
来自外部源的数据来呈现数据。如果设备处于离线模式,我还必须显示这些数据。这样做的最佳方法是什么?我是否需要一个内部数据库来存储数据,检查 wifi,如果它不可用,则提供本地数据?
感谢您可能知道的任何帮助或教程。
我有一种情况,我正在UITableView
使用NSJSONSerialization
来自外部源的数据来呈现数据。如果设备处于离线模式,我还必须显示这些数据。这样做的最佳方法是什么?我是否需要一个内部数据库来存储数据,检查 wifi,如果它不可用,则提供本地数据?
感谢您可能知道的任何帮助或教程。
我对正在开发的应用程序有类似的要求。我正在从 parse.com(远程对象)中提取数据并将数据放入核心数据(本地对象)中。在呈现表格视图时,我在后台运行 parse.com 查询,它会提取数据并将其放入核心数据中。表视图使用NSFetchedResultsController
这样当核心数据(本地)对象发生更改时,表视图会随着数据的检索而更新。如果离线,则不会检索任何内容,因此表视图不会更新,而是呈现对象的最后更新。
是的 。你可以让本地数据库来做那件事。
可以查看wifi状态。如果网络连接可用,则显示来自外部源的数据,如果网络连接不可用,则显示来自本地数据库的数据。
当您在线时从外部源检索数据时,将其存储在本地。下次启动您的应用程序时:
数据可以存储plist
在database file
.text file
您可以使用CoreData 数据库,即每次连接时更新数据。如果无法连接,只需显示旧数据。
如何使用以及如何检查 WiFi 连接 SO 提供的内容绰绰有余;)
如果不是太多,您可以将数据存储在 plist 中。
-(void)Writetoplist:(NSMutableDictionary*)LoginDetails
{
{
//////// This is used to delete the plist file if exist //////
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
plistPath = [documentsDirectory stringByAppendingPathComponent:@"LoginDetails.plist"];
NSError *error;
if(![[NSFileManager defaultManager] removeItemAtPath:plistPath error:&error])
{
//TODO: Handle/Log error
}
/// to write the SP Details in plist file
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
// get the path to our plist ("Documents/foo.plist")
plistPath = [documentsDirectory stringByAppendingPathComponent:@"LoginDetails.plist"];
[LoginDetails writeToFile:plistPath atomically:YES];
}
}