2012-03-13 3 views
0

RestKit을 사용하여 IOS에서 앱을 개발 중입니다. 데이터는 성공적으로 검색되지만 테이블보기에 표시 할 수 없습니다 (즉 행이 비어 있음). 테이블을 스크롤하면 행이 올바르게 표시됩니다 (즉, 데이터가 있습니다!).RestKit을 사용하는 동안 IOS의 테이블보기에 데이터를 표시하는 방법

당신은 코드에서 더 나은 아이디어를 얻을 것입니다. (그냥 간단하게하기 위해, 내가 코드의 거친 윤곽을 제공, 더 많은 코드가 필요한 경우 알려 주시기 바랍니다.)

TableViewController.m

- (void)viewDidLoad 
{ 
    NSLog(@"viewDidLoad_inside!!"); 
    RKRequest* request = [[RKClient sharedClient] get:@"/urlstring" delegate:self]; 
    [request send]; 
    NSLog(@"request is sent"); 
    [super viewDidLoad]; 
} 

- (void)requestDidStartLoad:(RKRequest *)request { 
     NSLog(@"request did start Load"); 
} 

- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response { 
     NSLog(@"request didLoadResponse"); 
...... 
    //rest of the code Logic 
...... 

} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"table_inside!!"); 
} 

코드가 성공적으로 실행되었지만 테이블의 행이 비어 있습니다. !!

출력 :

viewDidLoad_inside!

요청은로드

요청이 전송

요청이 그래서 문제가, 방법은 올바른 순서로 실행되지 않습니다되어

을 didLoadResponse

table_inside 시작했다. 왜 이런 일이 일어나고있는거야? 그것을 해결하는 방법. 그렇게하는 것이 더 좋습니다. 나는 IOS에 익숙하지 않아 그것을 이해할 수 없었다.

저는 Peter Kelly의 대답을 시도했는데 잘되었습니다. 그러나 레코드가 성공적으로 검색 될 때까지 tableView 메소드를 실행하면 안됩니다. 실행 순서를 변경하는 방법.

도움을 주시면 큰 도움이 될 것입니다.

답변

3

모든 데이터를 준비한 후에 tableView를 다시로드 했습니까?

[self.tableView reloadData]; 
+0

우수. 빨리 대답 해주셔서 감사합니다. 당신의 솔루션은 작동합니다 !!. 그러나 데이터의 크기가 너무 크면 restKit의 응답에 많은 시간이 걸립니다. 데이터가 검색 될 때까지는 행이 빈 채로 남아 추악한 모양을 유지합니다. 전체 데이터가 성공적으로 검색 될 때까지 표가 표시되지 않는 대안이 있습니까? 고맙습니다. :-) –

+0

문제 없습니다. (당신이 그것을 좋아한다면 대답을 upvote 받아 받아 들일 수 있습니다 ...). 나는 아마도 당신의 새로운 문제에 대해 다른 질문을 던질 것입니다. 제가 말한 의견에서 토론하려고하는 것보다 낫습니다. 데이터가로드 될 때까지 회 전자 컨트롤을 표시 할 수 있습니다. –