2012-01-12 69 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 2012-01-12 05:39:02

+0

是的,我已經保存在數組中的數據,所以如何可以使用,而不需要解析一次又一次 – 2012-01-12 05:40:38

+0

看到我的答案.. – Gypsa 2012-01-12 06:25:06

回答

1

你可以做的是: -

假設你解析你的XML和陣列存儲的數據說 'dataArray'

現在你要保存dataArrayNSUserDefaults

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

無論何時必須使用此數據,您都可以將其提取爲: -

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

您可以通過使用這樣的事情

- (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];,這將確保下載初始數據,即XML文件數據只在應用程序啓動時下載一次。您必須根據您的要求修復它,以通過重置@「DATA_DOWNLOAD_KEY」密鑰來下載數據。

+0

我已經發布我的服務器獲取代碼上面 – 2012-01-12 05:58:16

+0

代碼Jogi在哪裏:-P – 2012-01-12 06:42:47

+0

我編輯了你的代碼 – 2012-01-12 06:57:00

0

查看蘋果自己的SeismicXML示例 - 可用的源代碼。

+0

我檢查過,但它有很多修改 – 2012-01-12 07:19:07

相關問題