2011-09-22 4 views
1

Hihi 모두에 평안한를 Webservice에서 이미지의 목록을로드하면아이폰 :: 목표 - C - 어떻게 작동하는지, jQuery과

내가 (질문 제목) 위의 메커니즘을 구현할 수 있고,이는 다음과 같습니다

  1. NSURLConnection을 만들고 내 json webservice를 호출하여 각 레코드의 이미지 URL이있는 레코드 목록을 가져옵니다.
  2. connectionDidFinishLoading 대리자에서 반환 된 레코드를 NSArray로 설정하고 NSArray로 UITableView를 다시로드하지만이 시점에서 이미지를로드하지 않습니다.
  3. 동일한 connectionDidFinishLoading 대리자에서 검색된 각 레코드에 대해 별도의 연결을 해제하여 이미지 데이터를 가져옵니다. 이전 json webservice에서 반환 된 5 개의 레코드가 있다고 가정하면 각 레코드에 대한 이미지 데이터를 가져 오는 5 GET 요청을 실행합니다.
  4. 그런 다음 이번에는 connectionDidFinishLoading 대리인에서 이미지 데이터 가져 오기 요청에서 해고당한 것을 알 수 있습니다. 이미지 데이터를 내 UITableView 데이터 소스의 NSArray에 설정하고 reloadData를 수행합니다. 5 개의 레코드에 대해 테이블은 5 번 다시로드됩니다.
  5. 내 NSArray의 마지막 두 요소를 다시로드하지 않으면 모든 것이 올바르게 작동하는 것 같습니다. 그렇지 않으면 exc_bad_access 예외가 발생합니다.

감사합니다. 이것은 일을하는 어리석은 방법 일 수 있습니다.

:

답변

0

당신이하고있는 일을 묘사하는 방식이 괜찮은 것 같습니다. reloadRowsAtIndexPaths를 사용하여 전체 테이블이 아닌 이미지가 수신 될 때 각 셀을 업데이트 할 수 있습니다.

Here's a stack overflow question that may be helpful. 게으른 로딩을 검색하면 더 많은 예제를 얻을 수 있습니다.

코어 데이터를 사용하는 것이 올바른 방법입니다. NSFetchedResultsController를 사용하여 모든 테이블 유지 관리를 처리 할 수 ​​있기 때문입니다. 처음에는 nil 이미지 경로 속성이있는 객체로 표를로드하여 cellForRowAtIndexPath가 자리 표시자를 표시하거나 아무것도 표시하지 않도록 할 수 있습니다. 반환 된 이미지를 얻을 때 (비동기 적으로) 이미지를 로컬 저장소에 쓰고 해당 레코드에 대해 표시해야하는 이미지의 경로로 Core Data를 업데이트합니다. 핵심 데이터를 변경하면 수행 된 결과 컨트롤러에서 performFetch를 수행하면 테이블이 올바르게 표시됩니다. Apple's sample code을 따르는 경우 테이블에 reloadData조차 필요하지 않습니다.

+0

입력 해 주셔서 감사합니다. 확실히 그것을 시도 할 것이다! :) –

+0

게으른 로딩에 대한 정보 주셔서 감사합니다,하지만 내 문제는로드와는 아무 상관이 없습니다, 그것은 내가 처음으로 UIImage에 내 이미지 자리 표시자를 초기화 할 때 약간의 메모리 할당 실수를 한 것입니다. :) –

+0

그리고 reloadRowsAtIndexPaths 메서드를 사용하여 전체 tableView reloadData 피하기 위해 귀하의 조언을 따르십시오. :) –