每当单击刷新按钮时,如何更新 iOS 应用程序包中的嵌入式 JSON 文件
Posted
技术标签:
【中文标题】每当单击刷新按钮时,如何更新 iOS 应用程序包中的嵌入式 JSON 文件【英文标题】:How to update embedded JSON file in iOS app bundle whenever refresh button is clicked 【发布时间】:2014-03-01 09:31:00 【问题描述】:我有一个应用程序,其中我的数据以JSON
格式离线,但我希望应用程序在触摸刷新按钮时从互联网更新JSON
文件。
我使用JSON
文件作为本地数据库,更新数据库时将在服务器上生成更新的数据库。该应用程序应从 Internet 下载 JSON
文件并将其用作本地数据库。
如何才能做到这一点?我对要使用什么方法以及如何完成感到困惑。
【问题讨论】:
【参考方案1】:您无法覆盖与您的应用捆绑的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.
);
);
【讨论】:
所以我必须在文档文件夹中设置我的默认数据,即 json 文件,然后更新它 是的,你是对的。此外,您可以做的是,当您的应用程序第一次启动时,只需将JSON
数据从应用程序包复制到 Documents
并始终引用此位置,而不是从包中读取原始 JSON 或 Documents
.以上是关于每当单击刷新按钮时,如何更新 iOS 应用程序包中的嵌入式 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章