2012-01-12 6 views
0

У меня есть приложение для журнала, я хочу, чтобы он загружал файл с сервера и хранил его в приложении, когда приложение запускается в первый раз, а затем использует этот локальный файл, чтобы сэкономить время, которое я получаю данные, которые находятся на сервере, занимает много времениКак скачать xml-файл и сохранить в локальном приложении iphone

 NSURL*myurl=url; 

     myurl = [myurl stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
    myurl = [myurl stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 



    NSURL*urlloaded= [[NSURL alloc]initWithString:myurl]; 

    //NSURL*url= [[NSURL alloc]initWithString:@"http://localhost:8888/RowOne.xml"]; 

    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:urlloaded]; 

// Инициализировать делегата.

 RowTwoParser *parser = [[RowTwoParser alloc] initXMLParser]; 

// Установить делегат

 [xmlParser setDelegate:parser]; 
    BOOL success = [xmlParser parse]; 

    if(success) 

    NSLog(@"No Errors"); 

    else 

    NSLog(@"Error Error Error!!!"); 
+0

Вместо сохранения вашего xml-файла. Я бы предложил сохранить ваши данные. Что я имею в виду, вы могли бы извлечь ваши данные в словаре или в массиве, поэтому сохраните этот словарь или массив в NSUserDefults и используйте его каждый раз. Это уменьшит ваши рабочие усилия делать разбор синтаксиса xml снова и снова. – Gypsa

+0

Да, я сохранил эти данные в массиве, поэтому как можно использовать это без синтаксического разбора снова и снова –

+0

см. Мой ответ .. – Gypsa

ответ

1

Что вы можете сделать, это: -

Предположим, что вы разобраны ваш XML и сохраненные данные в массив, скажем, 'dataArray'

Теперь вы должны сохранить ваш dataArray в NSUserDefaults

NSUserDefaults *pref1=[NSUserDefaults standardUserDefaults]; 
[pref1 setObject:dataArray forKey:@"parseData"];  
[pref1 synchronize]; 

Всякий раз, когда вы должны использовать эти данные, вы можете извлечь их как: -

NSUserDefaults *pref1=[NSUserDefaults standardUserDefaults]; 
NSArray *dataArray=[pref1 objectForKey:@"parseData"]; 
1

Вы можете загрузить исходные данные, то есть файл XML, используя что-то вроде этого

- (void)downloadInitialData { 
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; 
    if ([userDefaults boolForKey:@"DATA_DOWNLOAD_KEY"] == NO) { 
     [self showWaitViewWithText:@"Downloading Data..."]; 
     [self fetchDataFromServer]; 
    } 
} 



- (void)fetchDataFromServer { 

    //Call to server to downlaod data 
    //When Data is successfully downloaded 

    //Stop loading when data save completes 
    [self stopLoading]; 

    //Update USerDefaults 
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setBool:YES forKey:@"DATA_DOWNLOAD_KEY"]; 
    [userDefaults synchronize]; 
} 

Вы можете сделать вызов [self downloadInitialData]; который будет гарантировать, что Данные загружаются только один раз, когда приложение запускается. Вам нужно будет исправить это в соответствии с вашими требованиями для загрузки данных, сбросив ключ @ DATA_DOWNLOAD_KEY.

+0

Я отправил свой код для получения кода выше –

+0

Где код Jogi :-P –

+0

Я отредактировал ваш код –

0

Отъезд Яблоки собственные SeismicXML пример - имеется исходный код.

+0

Я проверил это, но у него есть много изменений, чтобы сделать –

Смежные вопросы