如何在单击刷新按钮时更新iOS应用程序包中的嵌入式JSON文件

时间:2014-03-01 09:31:00

标签: ios objective-c json web-services cocoa-touch

我有一个应用程序,我的数据以JSON格式离线,但我希望应用程序在触摸刷新按钮时从互联网更新JSON文件。

我已将JSON文件用作本地数据库,并且在更新数据库时将在服务器上生成更新的数据库。应用程序应从Internet下载JSON文件并将其用作本地数据库。

如何才能实现这一目标?我对使用什么方法以及如何完成它感到困惑。

1 个答案:

答案 0 :(得分:3)

您无法覆盖与您的应用捆绑在一起的JSON。但是,您可以更新存储在应用包外部的JSON - 例如在应用的Documents文件夹中。

您需要保存JSON的方法:

-(void)saveJSONWithData:(NSData *)data
{
     NSString *path = [[self applicationDocumentsDirectory] stringByAppendingFormat:@"/data.json"];

     [data writeToFile:path atomically:YES];
}


- (NSURL *)applicationDocumentsDirectory 
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory 
                                                   inDomains:NSUserDomainMask] lastObject];
}

您还需要下载JSON。投注方式是在后台执行请求,以便UI线程不被阻止。

- (void)getJSONDataAtURL:(NSURL *)urlWithJSON
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^
    {
        // Download the data in background.
        NSData *data = [NSData dataWithContentsOfURL:urlWithJSON];

       [self saveJSONWithData:data];

        dispatch_async(dispatch_get_main_queue(), ^
        {
            // Do your tasks on the main thread.
        });
    });
}