Вы должны быть в состоянии загрузить его так, как вы ожидаете (например, получить доступ к значению в NSDictionary
):
NSArray *highScore = [[NSUserDefaults standardUserDefaults] objectForKey:@"highScore"];
Обновить
Чтобы отобразить данные из этого массива в табличном представлении, вам необходимо создать контроллер представления и использовать массив в качестве источника данных.Самый простой способ сделать это - создать подкласс UITableViewController
.Это должно помочь вам начать реализацию этого контроллера:
// HighScoreViewController.h
@interface HighScoreViewController : UITableViewController {
NSArray *highScores;
}
@property (nonatomic, retain) NSArray *highScores;
@end
.
// HighScoreViewController.m
#import HighScoreViewController.h
static const NSInteger kNameLabelTag = 1337;
static const NSInteger kScoreLabelTag = 5555;
@implementation HighScoreViewController
@synthesize highScores;
- (void)viewDidLoad {
[self setHighScores:[[NSUserDefaults standardUserDefaults]
objectForKey:@"highScore"]];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [self.highScores count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"PlayerCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cel == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier] autorelease];
// Create UILabels for name and score and add them to your cell
UILabel *nameLabel = [[UILabel new] autorelease];
[nameLabel setTag:kNameLabelTag];
[cell.contentView addSubview:nameLabel];
UILabel *scoreLabel = [[UILabel new] autorelease];
[scoreLabel setTag:kScoreLabelTag];
[cell.contentView addSubview:scoreLabel];
// Set other attributes common to all of your cells here
// You will also need to set the frames of these labels (nameLabel.frame = CGRectMake(...))
}
NSDictionary *player = [self.highScores objectAtIndex:indexPath.row];
NSString *name = [player objectForKey:@"name"];
NSString *score = [player objectForKey:@"score"];
[(UILabel *)[cell.contentView viewWithTag:kNameLabelTag] setText:name];
[(UILabel *)[cell.contentView viewWithTag:kScoreLabelTag] setText:score];
return cell;
}
@end
При использовании UITableView
следует помнить, что ячейки используются повторно, поэтому вам необходимобудьте осторожны с тем, где вы инициализируете / настраиваете подпредставления своей ячейки.