2012-01-12 2 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]; 

// 설정 당신은 당신이 보장되는 [self downloadInitialData];에 전화를 걸 수있는이

- (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]; 
} 

같은 것을 사용하여 초기 데이터가 XML 파일을 즉, 다운로드 할 수 있습니다

 [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'

말을 가정하여 dataArrayNSUserDefaults

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

에서 이 데이터를 사용해야 할 때마다 다음과 같이 추출 할 수 있습니다. -

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

위임 응용 프로그램이 시작되면 데이터가 한 번만 다운로드됩니다. @ "DATA_DOWNLOAD_KEY" 키를 재설정하여 데이터를 다운로드하기위한 요구 사항에 따라 수정해야합니다.

+0

위의 코드를 내 서버에 게시했습니다. –

+0

코드는 어디에 있습니까? Jogi :-P –

+0

코드에서 편집했습니다. –

0

체크 아웃 사과 자신의 SeismicXML 예제 - 소스 코드를 사용할 수 있습니다.

+0

나는 그것을 점검했다. 그러나 그것은 할 많은 수정이있다. –

관련 문제