2014-10-01 3 views
0

작은 배경을 사용하면 여기에서 수행하려고하는 것을 얻을 수 있습니다. 몇 가지 질문이 있으니 나와 함께 견뎌주십시오.두 개의 UITableViews 채우기

Im 오늘의 다가오는 게임을 보여주는 내 iPhone 응용 프로그램을 만듭니다. 아래 이미지에서 구조를 볼 수 있습니다. "TableView1"하고 한 타격을 "TableView2"

enter image description here

는 상위 테이블 뷰를 호출 할 수 있습니다. 현재 Json 텍스트를 반환하는 웹 사이트에서 TableView1에 대한 데이터를 채우고 있습니다. 여기

http://afternoon-springs-7986.herokuapp.com

그리고

는 GamesInfoViewController.m (스토리 보드를 통해 TableView1에 연결되어있는 클래스)

- (void) retrieveData{ 

    NSURL *url = [NSURL URLWithString:@"http://localhost:5000"]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 

    jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 
    GamesInfoArray = [[NSMutableArray alloc] init]; 





    for (int i= 0; i < jsonArray.count; i++) 
    { 
     NSString *gameTime = [[jsonArray objectAtIndex:i] objectForKey:@"time"]; 
     NSString *gameID = [[jsonArray objectAtIndex:i] objectForKey:@"identity"]; 
     NSString *homeTeam = [[jsonArray objectAtIndex:i] objectForKey:@"homeTeam"]; 
     NSString *homeScore = [[jsonArray objectAtIndex:i] objectForKey:@"homeScore"]; 
     NSString *awayTeam = [[jsonArray objectAtIndex:i] objectForKey:@"awayTeam"]; 
     NSString *awayScore = [[jsonArray objectAtIndex:i] objectForKey:@"awayScore"]; 

     [GamesInfoArray addObject:[[GameInfo alloc] initWithidentity:gameID andtime:gameTime andawayTeam:awayTeam andawayScore:awayScore andhomeTeam:homeTeam andhomeScore:homeScore]]; 
    } 

    [self.tableView reloadData]; 
} 

당신이 내가있는 NSMutableArray에 정보를 저장하고 볼 수있는 것처럼 그것을 수행하는 코드입니다 GamesInfoArray라고합니다. 이제 GamesInfoArray에 저장된 객체 중 일부가 TableView2를 채우는 데 사용됩니다 (각 객체에 저장된 시간 값을 사용하여 특정 게임이 시작되었는지 확인하기 위해 if 문을 작성합니다)

나는 이것을 수행하는 가장 좋은 방법을 생각하고 있습니다. 웹 서버에서 정보를 가져 와서이 정보를 처리하는 새로운 클래스에 넣은 다음 두 개의 다른 NSMutableArrays에 정보를 저장하는 위의 코드를 작성하는 것입니다. 하나는 지금 당장 가져 왔고 다른 하나는 TableView2를 채 웁니다. 그래서 각 TableView는 올바른 NSMutableArray에서 필요한 정보를 얻을 수 있습니다.

은 TableView1의 예입니다

enter image description here

당신이 녹색 버튼이 라이브를 의미하며 그

TableView2

에 표시 할 개체의 예이다가 볼 수있는 것들 이후 내 첫 번째 응용 프로그램과 나는 전에 이런 짓을 한 적이 없기 전에 내가 몇 가지 팁을 사랑한다면 나는 옳다고 생각하거나 다른 방식으로해야한다.

당신은 아무것도 추가 코드 나 정보가 필요하면 TableView2는 데이터를 저장하는 별도의 클래스를 만들 의미가 GamesInfoViewController의 정보에 의존하기 때문에 그냥 날 아픈 업데이 트 코드

답변

0

을 말한다. 특히 TableView2가 GamesInfoViewController에서 검색되는 경우 최신 데이터를 보유한다는 사실에 의존 할 수 없기 때문에 특히 그렇습니다.

나는 데이터를 가져 오는 API 클라이언트 클래스와 GameInfo 객체 배열을 저장/캐시하는 싱글 톤이라는 두 클래스를 만들 것이다. 나는 싱글 톤에 GameInfo 객체를 저장하고 데이터 소스에 별도의 배열을 가지고있다. 필요하다면 TableView2를 사용한다. (단지 두 개의 테이블 사이에 동일한 GameInfo 배열을 공유 할 수있는 것과 같은 정보 만 보여준다.) . 또한 retrieveData 메소드는 각보기 컨트롤러 클래스에 있어야 연결/구문 분석 오류에 적절하게 응답 할 수 있습니다.

+0

각보기 컨트롤러에서 retreiveData를 사용하여 싱글 톤 클래스의 정보를 얻은 다음 맞습니까? @ psobko –

+0

서버에서 라이브 데이터를 가져 오려면 retrieveData를 사용하고 신선한 데이터를받은 지 얼마나 되었는 지 확인하십시오. 그렇게하면 서버에서 데이터를 가져 오는 데 오류가있는 경우 앱 진행 방법을 결정할 수 있습니다. – psobko

관련 문제