2012-05-12 3 views
1

내 서버의 .txt에서 텍스트를 다운로드하는 textview가 있습니다. 유일한 문제는 .txt 파일을 업데이트했는지 여부에 관계없이 텍스트가 변경되지 않는다는 것입니다. 여기 NSURL에 타임 스탬프 추가

는 텍스트 뷰에 대한 코드입니다 :

- (void)viewDidLoad 

{NSError *error = nil; 
NSURL *myurl = [NSURL URLWithString:@"http://www.myserver.com/test.txt"]; 
NSString *mystring = [NSString stringWithContentsOfURL:myurl encoding:NSUTF8StringEncoding error:&error]; 
newtext.text = mystring; 
} 

는 매번 서버를 확인하는 방법을 알아낼 수 없습니다 응용 프로그램 실행 (그리고 그냥 처음 발견 한 것은 캐시하지) . 이것은 시뮬레이터와 실제 아이폰에서도 발생합니다.

도움 주셔서 감사합니다.

답변

0

편의 방법 stringWithContentsOfURL을 사용하여 캐시 정책을 설정할 수 있다고 생각하지 않습니다. 내가 틀렸다면 누군가가 나를 바로 잡습니다.

좋은 소식은 수정하는 것이 매우 간단하다는 것입니다. 자체 요청을 작성하고 캐시 정책을 NSURLRequestReloadIgnoringLocalCacheData로 설정하기 만하면됩니다.

NSURL *myurl = [NSURL URLWithString:@"http://www.myserver.com/test.txt"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:myurl 
             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
            timeoutInterval:60.0]; 

NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request 
                  delegate:self]; 

그런 다음 대리인의 텍스트보기를 설정하십시오. 하루가 끝날 무렵, 어쨌든 이것은 편리한 방법입니다.

+0

답장을 보내 주셔서 감사합니다! 귀하의 코드를 통합하려고했지만 위임자의 텍스트보기를 설정하는 방법을 잘 모르겠습니까? – Homeoftheben

+0

샘플 NSURLConnection 구현을 보려면 여기를 참조하십시오. connectionDidFinishLoading 메소드에서 텍스트보기를 설정하기 만하면됩니다. http://stackoverflow.com/questions/2124421/are-there-complete-examples-that-make-use-of-all-the-nsurlconnection-delegate-me – Joel

+0

OK! 모든 컴퓨터에서 브라우저의 txt 파일을보고 cntrl 키를 누른 상태에서 새로 고침 (페이지의 브라우저 캐시를 지우고 강제로 다시로드하는 경우에만 가능). 그런 다음 (그리고 그때에만) 아이폰은 새로운 텍스트를 가져올 것입니다. 나는 내 마음을 잃어버린 것처럼 느낀다. 그러나 그것은 효과가있다! 모든 도움에 다시 한 번 감사드립니다! – Homeoftheben

0

HTTP 캐싱은 Cache-Control HTTP 헤더로 제어됩니다. 텍스트 파일이 자주 변경되는 경우, 적절한 헤더 (예 : Cache-Control: no-cache)를 보내도록 서버를 구성해야합니다. 자세한 내용은 Mark Nottingham's caching tutorial을 참조하십시오.

+0

빠른 답장을 보내 주셔서 감사합니다.머리글 집합 캐시 제어 "max-age = 1, public, must-revalidate" "그러나 텍스트 필드 (" ")를 포함하도록 서버 hta 액세스 파일을 편집했습니다. 여전히 새 txt 파일의 내용을로드하지 않습니다. – Homeoftheben

+0

컬 (curl)과 같은 도구를 사용하여 수동으로 요청을 수행하여 헤더가 유효 함을 확인 했습니까? 귀하의 응용 프로그램이 찰스와 같은 프록시와 함께 이전에 캐시 된 버전을 사용하고 있지 않음을 확인 했습니까? * 캐싱을 가능하게하는 HTTP 헤더를 선택하는 이유는 무엇입니까? 완전히 캐싱을 사용하지 않는 헤더를 사용해 보셨습니까? – Jim

+0

안녕하세요. 나는 캐시를 완전히 비활성화하기 위해 hta 액세스 파일을 변경했습니다 :' Header unset Cache-Control '그러나 나는 그것이 Curl과 작동하는지 확인하는 방법을 모르겠습니다. 시뮬레이터 내에서 콘텐츠 및 설정을 원래대로 설정했지만 이전 txt 파일의 콘텐츠가 계속 표시됩니다. – Homeoftheben