我有一个应用程序,我的数据以JSON
格式离线,但我希望应用程序在触摸刷新按钮时从互联网更新JSON
文件。
我已将JSON
文件用作本地数据库,并且在更新数据库时将在服务器上生成更新的数据库。应用程序应从Internet下载JSON
文件并将其用作本地数据库。
如何才能实现这一目标?我对使用什么方法以及如何完成它感到困惑。
答案 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.
});
});
}