如何在iOS上本地缓存JSON Web响应 - 目标c

时间:2018-03-03 17:31:33

标签: ios objective-c json

我正在为网络后端构建移动iOS应用。我使用以下代码检索JSON响应:

NSError *error;
NSString *url_string = [NSString stringWithFormat: @"https://myURL"];
NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:url_string]];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

在本地存储此数据的最佳/最简单方法是什么,以便在互联网连接不可用时我可以使用本地数据库?目的是在启动应用程序时检查Web连接。如果连接可用,请获取JSON响应,解析并更新本地副本,如果连接不可用,则解析本地存储中的数据。

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您希望缓存JSON数据以便仍然可以脱机使用它,我会将JSON字典(或数据)写入应用程序沙箱中的文件。 "应用程序支持"的一个子文件夹文件夹将是一个好地方。在这种情况下,您不想使用Caches文件夹,因为当您需要脱机时,iOS可以清除这些文件。

诀窍是将给定的URL映射到文件名。您需要此映射来保存给定URL的文件,并在以后加载文件(如果脱机)。您应该只需将所有/字符转换为其他字符(如下划线),即可将URL转换为有用的文件名。

当用户备份他们的iOS设备时,您可能不希望备份这些文件,因此请务必使用"不备份"标记文件。属性。关于该主题存在许多现有问题。

答案 1 :(得分:-1)

最好的方法是 CoreData 和 最简单的方法是 NSUserDefaults

NSUserDefaults Class Reference

[[NSUserDefaults standardUserDefaults] setObject: jsonDict forKey:@"dictionaryKey"];
 //...
 NSDictionary * myDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"dictionaryKey"];