2013-10-30 2 views
1

rest kit 0.20.3 및 xcode 5를 사용하여 응용 프로그램을 만들었습니다. 서버에 객체 2 개를 만들었습니다. 그러나 테이블 뷰에 데이터를 표시 할 수 없습니다. PlayerViewController.mRestkit- 테이블보기에서 json 데이터를 표시하는 방법

#import "PlayerViewController.h" 
#import <RestKit/RestKit.h> 
#import "Player.h" 

@interface PlayerViewController() 

@end 

@implementation PlayerViewController 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIRefreshControl *refreshControl = [UIRefreshControl new]; 
    [refreshControl addTarget:self action:@selector(loadPlayers) forControlEvents:UIControlEventValueChanged]; 
    self.refreshControl = refreshControl; 

    [self loadPlayers]; 
    [self.refreshControl beginRefreshing]; 

} 

-(void)loadPlayers{ 

    [[RKObjectManager sharedManager] getObjectsAtPath:@"/players.json" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
     [self.tableView reloadData]; 
     [self.refreshControl endRefreshing]; 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     [self.refreshControl endRefreshing]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An Error Has Occurred" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alertView show]; 
    }];} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return players.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"PlayerCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    Player *player = [players objectAtIndex:indexPath.row]; 
    cell.textLabel.text = player.playerName; 

    return cell; 
} 

선수 배열 수가 내가 여기서 뭔가를 누락 알고있는 0을 보여 주지만, 그것을 알아낼 수없는 것 : 아래 내 테이블 뷰에 대한 코드입니다. 감사합니다.

+0

방금 ​​다운로드 한 데이터를'players' 배열에 할당하고 있습니까? – Zalykr

+0

나는 내가받은 2 명의 플레이어 개체로 배열을 설정하는 방법을 모르겠다. upls가 어떻게하는지 말해 줄 수 있어요. – Amaresh

+0

데이터가 서버에서 오는 형식에 따라 다릅니다. – Zalykr

답변

3

당신은 당신의 플레이어 배열에 데이터를 할당해야합니다 : 이것은 가정

[[RKObjectManager sharedManager] getObjectsAtPath:@"/players.json" 
             parameters:nil 
              success:^(RKObjectRequestOperation *operation, 
                RKMappingResult *mappingResult) { 
    self.players = mappingResult.array; // <-- doing the actual assignment 
    [self.tableView reloadData]; 
    [self.refreshControl endRefreshing]; 
} // ... the rest of your code 

당신이 당신의 매핑이 정확해야합니다.

+0

고마워요! 그것은 효과가 있었다. 실제로 나는 이전에 NSMutableArray를 만들었으므로 self.players = mappingResult.array 줄에서 작동하지 않았습니다. 그래서 NSArray로 바꿨고 바보 같은 실수를했습니다. 하지만 어쨌든 고마워! – Amaresh

+0

만약 당신이 그것을 (어떤 이유로 든) NSMutableArray로 유지하고 싶다면 다음과 같이하면된다 :'self.players = [mappingResult.array mutableCopy];'다행이다. – Firo

+1

감사! 이걸로 ... – Amaresh