2011-10-26 3 views
3

내 코드가 웹 서버의 XML 파일에서 url의 내용을 쓰고 문자열에 내용을 저장 한 다음 문서 디렉토리의 로컬 파일에 저장합니다. 내가이 뷰를 다시 실행할 때에도 항상 장치에 캐시 된 내용을 가져오고 웹 서버에서 업데이트를 가져 오지 않고 처음으로로드하면 모든 것이 잘 진행됩니다.stringWithContentsOfURL 캐시를 사용하여 URL 내용을 문자열로 작성하십시오.

매번 서버의 파일에서 내용을 읽도록 강제하는 방법은 무엇입니까?

NSString * path = @"http://my-domain-name.com/myGlobalFile.xml"; 
NSString * myStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:path] encoding:NSUTF8StringEncoding error:nil]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
localFilePath = [documentsDirectory stringByAppendingPathComponent:@"myLocalFile.xml"]; 
[myStr writeToFile:localFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
+0

프로그램에서 위의 스 니펫을 수행하는 위치는 어디입니까? writeToFile이 리턴 할 수있는 오류 오브젝트를 점검 할 수도 있습니다. – onnoweb

답변

2

당신은 실제로 일을 더 나은 방법이 될 것이다 (AN NSURLRequestNSURLConnection를 사용하여 문자열을 다운로드 할 수 - 비동기 적으로 - 그리고 할 수도 있습니다 진행에 대한 피드백 (http://stackoverflow.com/questions/2267950/how-to-make-an-progress-bar-for-nsurl 연결 - 다운로드 - 파일)).

NSURLRequest을 사용하면 사용하려는 캐싱 정책을 훨씬 세밀하게 제어 할 수 있습니다. 다음과 같이

당신은 당신의 NSURLRequest을 설정합니다 : (. 다른 정책을 선택하려면 "NSURLRequestCachePolicy"아래로 스크롤)

NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://my-domain-name.com/myGlobalFile.xml"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; 

당신은 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html에서 값 NSURLRequestReloadIgnoringLocalCacheData을 대체 할 수

들어 이 코드를 마무리하는 방법에 대한 전체 문서와 구현할 필요가있는 위임 메서드와 함께

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

전체 프로세스를 통해 당신을 말할 것입니다.

관련 문제