如何在ios设备中存储来自url的json数据并使用本地数据

我想在我的应用程序中使用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吗?

对于OnlineOffline json数据,解析方式应该相同,两者都是相同的,只需要在Documents Directory使用Unparsed数据说data.json来编写文件,如果你想使用相同的进程来使用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]; }