У меня есть .json файл в моем проекте Xcode, который содержит много информации. Я не могу получить его каждый раз, потому что он действительно большой. Но я хотел бы обновить этот файл раз в неделю в своем приложении. Является ли это возможным?Обновление файлов в приложении iOS
ответ
Возможно, вы можете сделать локальное уведомление, которое будет отправлено раз в неделю, а затем загрузить файл. Или вы даже можете отправлять push-уведомления, чтобы приложение скачало приложение.
Чтобы скачать файл (в данном случае и распаковать его с помощью 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
Вы не можете заменить файл в Xcode проекте , Вы можете только читать ресурсов из пакета приложений. Если вы хотите написать, вам необходимо скопировать файл в каталог документов приложения и изменить его там.
Теперь вы можете загрузить даже большие файлы в фоновом режиме и заменить файл в каталоге для записи, когда вы закончите.
Дальнейшие замечания:
Подумайте о том, как вы могли бы разработать веб-службы, чтобы просто отправить постепенные изменения. Это кажется гораздо более разумным. Кроме того, вместо того, чтобы анализировать содержимое огромного файла JSON в памяти, вам может быть лучше использовать Core Data.
но как я могу сохранить его и заменить существующим в моем проекте Xcode? –
Я добавил код, это вам помогло? – facumedica
да, спасибо. –