iOS는 다운로드하기 전에 원격 파일이 업데이트되는지 확인합니다
-
21-12-2019 - |
문제
이것은 두 부분의 질문입니다. RSS 피드를 다운로드하려면 nsxmlparser를 사용하고 있습니다.
NSURL *url = [NSURL URLWithString:@"linktorssxml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
.
XML의 머리글을 원격으로 읽고 마지막 업데이트 시간 소인을 확인하여 파서 코드를 실행하고 실제로 변경이 있으면 실제로 전체 XML을 가져와야하는지 궁금합니다.
더 이렇게하면 이는 두 부분의 질문입니다. 외부에서 호스팅되는 Plist와 동일한 생각을 가지고 있습니다.이것은 현재 다음과 같이 호출됩니다 : -
_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]];
.
다시는 마지막 업데이트 시간 동안 헤더를 원격으로 확인하고 변경이 있으면 전체 파일 만 다운로드하는 방법이 있습니까?
해결책
예,하지만 NSURLConnection
또는 NSURLSession
를 사용하여 NSXMLParser
를 사용하는 대신 데이터를 다운로드해야합니다.
NSMutableURLRequest
를 사용하여 원하는 것을 설명하여 HTTP 헤더 (마지막 수정 날짜 포함)를 가져올 수 있습니다.setHTTPMethod:
라는 메소드가 있으며 HEAD
에 메서드를 설정할 수 있습니다.연결을하고 헤더를 가져 와서 다음에 수행 할 작업을 결정하십시오.
XML이 매우 큰 경우가 아니라면, 아마도 가장 효과적인 접근 방식이 아닐 것입니다.파일이 수정 된 경우 두 번째 네트워크 요청을 받아야 할 필요가 있습니다.네트워크 요청이 느리므로 최소한으로 유지해야합니다.대부분의 경우 NSURLConnection
또는 NSURLSession
를 사용하여 파일을 가져 오는 것이 좋습니다.응답에는 HTTP 헤더가 포함되므로 날짜가 표시되므로 파서를 실행할지 여부를 여전히 결정할 수 있습니다.