2011-10-18 2 views
1

서버에서 일부 데이터를 다운로드하는 응용 프로그램을 설계했으며 네트워크에 문제가없는 경우 모두 올바르게 작동합니다. 그러나 다운로드 중에 네트워크 변동이있는 경우 일부 데이터가 다운로드되지 않고 앱이 다운됩니다. 여기 당신들에게 도움이 필요합니다. 이러한 상황을 처리하고 불완전하게 다운로드 된 데이터를 삭제하여 전체 데이터를 다시 다운로드하는 별도의 코드를 작성할 수 있습니까? 미리 감사드립니다.브로큰 다운로드 처리

+0

가 일부 코드를 게시하려고이 방법 내에서 모든 일을 처리 할 수 ​​
(NSError *) 오류가 현재하고있는 일 (무효) 연결을 - 그럼 방법
아래 호출 . –

답변

0

네트워크 변동이나 이와 유사한 문제가있는 경우 NSURLConnection 또는 다른 네트워크 API를 사용하는 경우 HTTP 오류 코드를 받아야합니다. 이를 사용하여 다운로드 된 불완전한 데이터를 삭제하고 컨트롤러 코드에 알리면 재 다운로드 등을 결정할 수 있습니다.

+0

답장을 보내 주신 Aditya Kumar Pandey에게 감사드립니다. 하지만 다른 응용 프로그램 클래스에서 다른 파일을 다운로드하고 있습니다. 그리고이 코드를 별도의 클래스에 작성하고이 클래스의 모든 다운로드를 처리 할 수 ​​있는지 알고 싶습니다. 그렇다면 단일 함수로 충분하고 인수와 반환 형식이 무엇인지 확인해야합니다. –

0

Aditya가 맞습니다. , 연결이 다음 위임 방법을 사용하여 응답 코드를 읽을 수 있습니다 나누기 경우가있는 NSURLConnection을 사용하고 있는지

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response { 
    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
    int responseStatusCode = [httpResponse statusCode]; 
} 

을 가정하고 연결을 중지하고 미완성 다운로드 데이터 삭제를 진행할 수 있습니다.


댓글에 대한 답변이 업데이트되었습니다.

다른 클래스에서 다른 연결을 사용하는 경우이 클래스를 각 클래스에 구현해야합니다. 제 생각에는 특정 클래스가 모든 연결 관련 작업을 처리하는 것과 같은 디자인이 있어야합니다. (귀하의 요구 사항에 맞지 않을 수 있습니다.) 그러나 현재 디자인의 경우이 클래스를 모든 클래스에서 사용해야합니다.

+0

빠른 답변을 주신 ElanthiraiyanS에게 감사드립니다. 하지만 다른 응용 프로그램 클래스에서 다른 파일을 다운로드하고 있습니다. 그리고이 코드를 별도의 클래스에 작성하고이 클래스의 모든 다운로드를 처리 할 수 ​​있는지 알고 싶습니다. 그렇다면 단일 함수로 충분하고 인수와 반환 형식이 무엇인지 확인해야합니다. –

+0

내 대답이 업데이트되었습니다. – sElanthiraiyan

1

예. 당신은 그것을 할 수 있습니다.
두 가지 상황이 있습니다.
1. 네트워크를 사용할 수 없습니다.
->이 문제를 해결하려면 "Rechability"샘플 코드 (Apple 제공)를 사용해야합니다. 다운로드를 시작하기 전에 인터넷 사용 가능 여부를 확인해야합니다.
- 또는 인터넷 rechability를 확인하지 않으면 NSURL 연결의 대리자 메서드에서 오류 코드 (404)가 표시됩니다.
- (void) connection : (NSURLConnection *) connection didReceiveResponse : (NSURLResponse *) response
2. 네트워크 변동.
여기서 네트워크가 변동하는 경우 다운로드하는 것을 의미합니다. 연결 didFailWithError (있는 NSURLConnection *) : 당신은

관련 문제