在iOS应用中更新文件

时间:2015-09-09 19:34:19

标签: ios

我的Xcode项目中有.json文件,其中包含很多信息。 我不能每次都抓它,因为它真的很大。但我想在我的应用中每周更新一次该文件。有可能吗?

2 个答案:

答案 0 :(得分:0)

也许您可以制作每周触发一次的本地通知,然后下载该文件。或者你甚至可以发送推送通知告诉应用程序下载。

下载文件(在这种情况下,使用SSZipArchiver和AFNetworking将其解压缩下载):

 NSString *url = [NSString stringWithFormat:@"someurl"];
                     NSString *directoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
                     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];

                     NSString *filePath = [directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"nameofthefile.zip"]];
                     zipPath = filePath;
                     NSLog(@"DIRECTORY WHERE THE FILES ARE SAVED-->%@",directoryPath);

                     AFURLConnectionOperation *operation1 = [[AFHTTPRequestOperation alloc] initWithRequest:request];
                     operation1.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
                     [operation1 setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead)
                      {
                          NSLog(@"-----> %f", (float)totalBytesRead / totalBytesExpectedToRead);
                          self.hud.progress = (float)totalBytesRead / totalBytesExpectedToRead;

                      }];
                     [operation1 setCompletionBlock:^()
                      {
                          [SSZipArchive unzipFileAtPath:zipPath toDestination:directoryPath overwrite:YES password:nil error:nil delegate:self];


                      }];
                     [operation1 start];

以下是一些信息:How to create local notifications Stackoverflow

答案 1 :(得分:0)

您无法替换Xcode项目中的文件。您只能从应用程序包中读取资源。如果要编写,则需要先将文件复制到应用程序文档目录并在那里进行修改。

现在,您可以在后台下载大型文件,并在完成后替换可写目录中的文件。

进一步评论:
考虑如何设计Web服务以发送增量更改。这似乎更合理。此外,您可能最好使用Core Data,而不是将巨大的JSON文件的内容解析到内存中。