【发布时间】:2012-09-27 05:15:29
【问题描述】:
假设您正在从服务器连续读取 json 数据。假设您正在获取天气数据。我只想显示 2 小时后的数据。每当用户点击播放按钮时,它都会在地图上显示天气数据。
我如何先保存 json 数据然后将其显示在地图上。因为这将增强我的应用程序,而不是连接服务器、获取数据并同时显示它。请给我建议。我需要先将其保存为 plist 还是数组?在模拟之前我应该将这些数据保存在哪里?
【问题讨论】:
假设您正在从服务器连续读取 json 数据。假设您正在获取天气数据。我只想显示 2 小时后的数据。每当用户点击播放按钮时,它都会在地图上显示天气数据。
我如何先保存 json 数据然后将其显示在地图上。因为这将增强我的应用程序,而不是连接服务器、获取数据并同时显示它。请给我建议。我需要先将其保存为 plist 还是数组?在模拟之前我应该将这些数据保存在哪里?
【问题讨论】:
将其存储在文档目录的 plist 中是一种保存数据以供以后参考的好方法。如果要保存 JSON 字符串,也可以选择 NSUSerDefaults ..(如果字符串不太大的话最好)
保存到 plist..
NSURL *url = [NSURL URLWithString:serverPath];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/myplist.plist", documentsDirectory];
[urlData writeToFile:filePath atomically:YES];
}
并检索它..
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat: @"%@/myplist.plist",documentsDirectory ] ];
NSData *retrievedData = [NSData dataWithContentsOfFile:filePath];
【讨论】: