如何在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】:

OnlineOffline 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数据并在本地使用它的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中显示来自 JSON URL 的图像?

当JSON对象URL字段在android studio中包含多个URL时,如何存储来自JSON对象请求的URL?

解析 JSON 并在 Listview 中显示检索/获取 URL 服务器“无数据”

如何在 Swift 3 中解析来自 URL 的 JSON 数据

如何在 ios 设备中下载 HLS/M3U8 块?

如何在 iOS 模拟器上创建设备商店的 URL