我正在为网络后端构建一个移动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];
在本地存储此数据的最佳/最简单方法是什么,以便在无法使用Internet连接时可以使用本地数据库?目的是在启动应用程序时检查Web连接。如果连接可用,请获取JSON响应,解析并更新本地副本,如果连接不可用,则解析本地存储中的数据。
提前致谢。
如果您希望缓存JSON数据以便仍然可以脱机使用它,我会将JSON字典(或数据)写入应用程序沙箱中的文件。 “应用程序支持”文件夹的子文件夹将是一个好地方。在这种情况下,您不希望使用Caches文件夹,因为当您需要脱机时,iOS可以清除这些文件。
诀窍是将给定的URL映射到文件名。您需要此映射来保存给定URL的文件,并在以后加载文件(如果脱机)。您应该只需将所有/
字符转换为其他内容(如下划线),即可将URL转换为有用的文件名。
当用户备份其iOS设备时,您可能不希望备份这些文件,因此请确保使用“不备份”属性标记文件。关于该主题存在许多现有问题。
最好的方法是CoreData,最简单的方法是NSUserDefaults
NSUserDefaults Class Reference
[[NSUserDefaults standardUserDefaults] setObject: jsonDict forKey:@"dictionaryKey"];
//...
NSDictionary * myDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"dictionaryKey"];