2015-09-09 4 views
-1

У меня есть .json файл в моем проекте Xcode, который содержит много информации. Я не могу получить его каждый раз, потому что он действительно большой. Но я хотел бы обновить этот файл раз в неделю в своем приложении. Является ли это возможным?Обновление файлов в приложении iOS

ответ

0

Возможно, вы можете сделать локальное уведомление, которое будет отправлено раз в неделю, а затем загрузить файл. Или вы даже можете отправлять 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

+0

но как я могу сохранить его и заменить существующим в моем проекте Xcode? –

+0

Я добавил код, это вам помогло? – facumedica

+0

да, спасибо. –

0

Вы не можете заменить файл в Xcode проекте , Вы можете только читать ресурсов из пакета приложений. Если вы хотите написать, вам необходимо скопировать файл в каталог документов приложения и изменить его там.

Теперь вы можете загрузить даже большие файлы в фоновом режиме и заменить файл в каталоге для записи, когда вы закончите.

Дальнейшие замечания:
Подумайте о том, как вы могли бы разработать веб-службы, чтобы просто отправить постепенные изменения. Это кажется гораздо более разумным. Кроме того, вместо того, чтобы анализировать содержимое огромного файла JSON в памяти, вам может быть лучше использовать Core Data.