2014-01-13 1 views
0

변경되면 알고, 그것은아이폰 OS 파일이 내 iOS 앱과 MP4 파일을 다운로드하고

을 NSData dataWithContentsOfURL

를 사용하여 잘 작동하지만 난 파일이 업데이트 된 경우에만 업데이트 필요 ,

파일 헤더를 확인할 수 있습니까? 또는 파일을 업데이트하여 다시 다운로드했는지 확인하는 가장 좋은 방법은 무엇입니까?

감사

+2

['NSURL'] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html), ['NSURLRequest'] (https : //developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html) 그리고'NSURLConnection'을 사용하면 다운로드 진행을보다 잘 제어 할 수 있습니다. 핸들 오류를 처리하는 방법을 포함합니다. 또는 ['AFNetworking'] (https://github.com/AFNetworking/AFNetworking)과 같은 래퍼를 사용하십시오. – rckoenes

+0

또한 dataWithContentsOfURL 메서드를 추가하는 것은 동기식이며 appps를 응답하지 않게 만드는 주 스레드를 차단합니다. 별도의 스레드에서 실행하려면 NSThread 또는 GCD 또는 작업 대기열을 사용해야합니다. NSURLConnection은 비동기 적으로 실행되므로 선호되어야합니다. –

답변

2

SO answer에 설명 된대로 http HEAD 요청을 사용하여 메타 데이터에 액세스 할 수 있습니다. 필요한 정보를 골라 내려면 일종의 파서를 만들어야합니다. 설정 방법에 따라 모든 서버에서 작동하지 않을 수 있습니다.

서버를 직접 제어 할 수있는 경우 파일을 다운로드하기 전에 파일을 마지막으로 변경 한 날짜를 출력하는 PHP 스크립트를 사용하는 것이 좋습니다.

필자는 더 많은 데이터 (예 : 여러 파일의 메타 데이터, 데이터베이스의 항목 수 등)를 저장할 수 있으므로 문제의 파일과 함께 매니페스트 파일 (일반적으로 plist)을 배치하는 것을 선호합니다. 이 방법의 배경은이 파일을 최신 상태로 유지해야한다는 것입니다. 그러나 종종 그것은 가치가 있습니다.

마지막으로, rckoenes가 언급했듯이 dataWithContentsOfURL은 파일을 다운로드하는 아주 좋은 방법은 아니며 특히 큰 파일을 다운로드하는 것은 아닙니다. 실제로는 NSURLConnection을 관리하는 일종의 datamanager 클래스를 사용해야합니다.