如何在ios设备中存储来自url的json数据并在本地使用它
Posted
技术标签:
【中文标题】如何在ios设备中存储来自url的json数据并在本地使用它【英文标题】:how to store json data from url in ios device and to use local it 【发布时间】:2013-04-22 07:08:03 【问题描述】:我想在我的应用程序中使用 json。我可以使用此代码从 url 解析 json:
#import "ViewController.h"
@implementation ViewController
NSDictionary *titles;
NSMutableData *Data;
NSArray *fileContent;
NSArray *folderContent;
NSMutableArray *all;
@synthesize Table;
- (void)viewDidLoad
[super viewDidLoad];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSURL *url =[NSURL URLWithString:@"http://192.168.1.100/veis/root/developers/api/filemanager.php?key=5147379269&getlist=root"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc]initWithRequest:request delegate:self];
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
Data = [[NSMutableData alloc]init];
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
[Data appendData:theData];
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
titles = [NSJSONSerialization JSONObjectWithData:Data options:kNilOptions error:nil];
fileContent = [titles objectForKey:@"fileContent"];
folderContent = [titles objectForKey:@"folderContent"];
all = [[NSMutableArray alloc]init];
[all addObjectsFromArray:folderContent];
[all addObjectsFromArray:fileContent];
[Table reloadData];
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
UIAlertView *errorView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"The Connection has been LOST" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[errorView show];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
但我想当我没有互联网时可以使用 json。我不知道如何以离线方式(或在我的设备中本地)使用 json
你能在这个问题上指导我如何离线使用 json
【问题讨论】:
只打开一个本地文件。你在哪方面有问题? iPhone/ios JSON parsing tutorial的可能重复 Josh Caswell 我的朋友我的问题是我不知道如何在没有互联网的情况下使用 json。 (使用 plist ???或在我的设备中下载文件 json 并下一步使用它???哪种方式???) 【参考方案1】:Online
和Offline
json 数据的解析方式应该是一样的,都是一样的,只是你需要用Unparsed
写一个文件,数据说data.json
in Documents Directory
,如果你想使用使用json
的过程相同,但是如果要使用解析的json,则将其写为plist
..
您可以尝试使用以下方法
-(void)saveJsonWithData:(NSData *)data
NSString *jsonPath=[[NSSearchPathForDirectoriesInDomains(NSUserDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingFormat:@"/data.json"];
[data writeToFile:jsonPath atomically:YES];
-(NSData *)getSavedJsonData
NSString *jsonPath=[[NSSearchPathForDirectoriesInDomains(NSUserDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingFormat:@"/data.json"];
return [NSData dataWithContentsOfFile:jsonPath]
然后调用函数为
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
[self saveJsonWithData:data];
【讨论】:
我的朋友我明白你告诉我的两种方法是离线使用json。首先我可以在我的设备中使用下载 json 文件,然后从 .json 文件中解析 json,其次我可以在 .plist 文件中解析 json 然后使用 .plist????对吗??? 我的朋友,你能告诉我更多关于在我的设备中下载 .json 文件并使用下一步吗??? 会在App的Documents Directory
中
不,我的朋友我告诉你,在顶部代码中不是用于下载 .json 文件的 url以上是关于如何在ios设备中存储来自url的json数据并在本地使用它的主要内容,如果未能解决你的问题,请参考以下文章
当JSON对象URL字段在android studio中包含多个URL时,如何存储来自JSON对象请求的URL?
解析 JSON 并在 Listview 中显示检索/获取 URL 服务器“无数据”