如何将JSON响应保存到可从WebView中加载的本地HTML文件中访问的文件中

时间:2012-02-25 17:59:06

标签: ios xcode ios5

我收到了JSON响应,并且当前能够使用我的应用程序中的数据。

我想将此响应保存到文件中,以便我可以在项目中的JS文件中引用。我已经在应用程序启动时请求了一次这样的数据,所以为什么不将它保存到文件中并引用它,因此只需要对数据进行一次调用。

我的UIWebView的HTML文件使用“创建文件夹引用”选项导入到我的Xcode项目中,我的JS文件的路径是html->js->app.js

我想将响应保存为data.json设备上的某个位置,然后在我的js文件中引用,如request.open('GET', 'file-path-to-saved-json.data-file', false);

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:8)

在完成这个想法之后,我想出了更多内容。

安装应用程序时,程序包中有一个默认数据文件,我将其复制到Documents文件夹。当应用程序didFinishLaunchingWithOptions运行时,我调用以下方法:

- (void)writeJsonToFile
{   
//applications Documents dirctory path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

//live json data url
NSString *stringURL = @"http://path-to-live-file.json";
NSURL *url = [NSURL URLWithString:stringURL];
NSData *urlData = [NSData dataWithContentsOfURL:url];

    //attempt to download live data
    if (urlData)
    {   
        NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];
        [urlData writeToFile:filePath atomically:YES];
    }
    //copy data from initial package into the applications Documents folder
    else
    {
        //file to write to
        NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];

        //file to copy from
        NSString *json = [ [NSBundle mainBundle] pathForResource:@"data" ofType:@"json" inDirectory:@"html/data" ];
        NSData *jsonData = [NSData dataWithContentsOfFile:json options:kNilOptions error:nil];

        //write file to device
        [jsonData writeToFile:filePath atomically:YES];
    }
}

然后在我需要引用数据的整个应用程序中,我使用保存的文件。

//application Documents dirctory path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSError *jsonError = nil;

NSString *jsonFilePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];
NSData *jsonData = [NSData dataWithContentsOfFile:jsonFilePath options:kNilOptions error:&jsonError ];

要在我的JS代码中引用json文件,我为“src”添加了一个URL参数,并将文件路径传递给Applications Documents文件夹。

 request.open('GET', src, false);