2012-01-12 47 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

相关问题