Как загрузить файл и сохранить в локальном приложении для iPhone?

#iphone #xml #local-storage

#iPhone #xml #локальное хранилище

Вопрос:

Я локально сохранил один XML-файл и показываю детали с помощью NSXMLParser (который хранится в папке ресурсов). Но теперь я хочу загрузить новый xml с URL-адреса (со стороны клиента), и мне нужно сохранить этот новый XML-файл в локальном, а также удалить существующий из приложения. Как я могу это сделать? Есть предложения? Есть какой-нибудь пример кода / проекта для справки? Пожалуйста, помогите мне. Спасибо, что прочитали мой плохой английский. Заранее спасибо.

Комментарии:

1. вы можете сделать это с помощью ASIHTTPRequest. я загрузил zip-файл размером 30 МБ на iPhone с помощью ASIHTTPRequest и разархивировал локально.

2. Большое вам спасибо за быстрый ответ. Я не очень хорошо знаком с разработкой для iphone / ipad. Если вы не возражаете, не могли бы вы объяснить свой ответ? Спасибо.

Ответ №1:

хотя вы можете удалить файл из каталога ресурсов yr и сохранить новый, но мой способ — выполнять операции с файлами в основном в директориях приложений, таких как каталог документов или каталог кэша.

сначала вы сохраните XML-файл yr из ресурса приложения в каталог кэша, а затем получите доступ к файлу оттуда.И вы также можете удалить файл из каталога ресурсов, он больше не нужен. любой новый файл, доступный в Интернете, сначала удаляет старый из кэша и добавляет новый в каталог кэша.

все это выглядит следующим образом:-

     //get your cachedirectory path
NSArray *imagepaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachdirectory = [[NSString alloc] initWithString:[imagepaths objectAtIndex:0]];

//first save your file from resource directory to app's cache  directory
NSString * path = [[NSBundle mainBundle] pathForResource:@"fileinresource" ofType:@"xml"];
NSData *filedata = [NSData dataWithContentsOfFile:path];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *savename = [cachdirectory stringByAppendingPathComponent:@"mynewfile.xml"];
[fileManager createFileAtPath:savename contents:filedata attributes:nil];       

//remove file from resource directory
[fileManager removeItemAtPath:path error:nil];

//new file from internet is avilable then do following:first remove old file from cache
[fileManager removeItemAtPath:cachdirectory error:nil];

//save new file from internet
NSData *newfiledata=[NSData dataWithContentsOfURL:[NSURL URLWithString:myxmlurlstringpath]];
[fileManager createFileAtPath:savename contents:newfiledata attributes:nil];        
  

Комментарии:

1. Большое вам спасибо за быстрый ответ. Я не очень хорошо знаком с разработкой ios. Вот почему я изо всех сил пытаюсь выполнить все действия. Спасибо за ваш ответ. Я буду включен в свой код. Спасибо.