如何制作 iOS 应用的离线浏览器?

3
我需要在我的iOS应用程序上制作一个离线浏览器,它可以实现以下功能:
当您有互联网连接(wifi、3g、4g等)时,您可以下载您需要在当天阅读的所有网页,然后在没有互联网连接时也可以浏览内容。我从JSON文件导入数据。
我该如何做到这一点?
1个回答

0
如果您已经下载了数据,请将其保存到文档目录中,并检查是否没有网络连接,然后从文档目录加载内容。
获取文档路径。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [paths objectAtIndex:0];

如果您有一个NSDictionary:
NSString *path = [NSString stringWithFormat:@"%@",[paths objectAtIndex:0]];
NSDictionary *dict = [[NSDictionary alloc] init];
[dict writeToFile:[path stringByAppendingPathComponent:@"myOfflineData"] atomically:NO];

获取它的方法:

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:[path stringByAppendingPathComponent:@"myOfflineData"]];

或者将其保存为NSString等。

为了跟上你的示例:

NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http:......."]];
id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; jsonResults = [jsonObjects objectForKey:@"nodes"];
[jsonData writeToFile:[path stringByAppendingPathComponent:@"myOfflineData"] atomically:NO];

如果你处于离线状态:

NSData *jsonData = [[NSData alloc] initWithContentsOfFile:[path stringByAppendingPathComponent:@"myOfflineData"]];

让我试一下,然后我会给你反馈。 - Fatima
请问我应该把这段代码放在哪里?获取数据的代码如下:NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http:......."]]; id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; jsonResults = [jsonObjects objectForKey:@"nodes"]; 其中jsonResults是一个可变数组。 - Fatima
只需将NSData保存到您的文档中,并在离线时加载它。只需用NSData替换NSDictionary即可。 - Julien Klindt
我会测试它,然后告诉你它是否能够工作,谢谢。 - Fatima
你能告诉我应该在哪个方法中实现它吗?实际上,在根视图中我实现了上面的代码,在AppDelegate中我实现了一个警告来告诉用户没有连接。存储数据和获取数据应该在哪里实现? - Fatima
你可以在你的rootView中实现它,并使用苹果的Reachability类来检查是否有连接,但这个逻辑不应该放在appDelegate中。http://developer.apple.com/library/ios/#samplecode/Reachability/ - Julien Klindt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接