0

私は小さなゲームを開発しています。nsuserdefaults を使用してプレイヤー名とスコアを保存しています。今、私は uitableview に上位 5 つのスコアのみを保存したいと思います。また、上位 5 つのスコアのみを表示したいと考えています。

-(void)btnSaveScore

{
    if(!dictWinData)
        dictWinData = [[NSMutableDictionary alloc] init];

array = [[NSMutableArray alloc] init];
array = [[[NSUserDefaults standardUserDefaults] valueForKey:@"ScoreName"] mutableCopy];

if([array count] == 0)
{
    array = [[NSMutableArray alloc] init];
}

NSString *strName = [NSString stringWithFormat:@"%@",strNameOFPlayer];
NSString *strScore = [NSString stringWithFormat:@"%@",[NSString stringWithFormat:@"%d",iTap]];

if ([strScore length] == 3)
{

    [array addObject:[NSString stringWithFormat:@"%@                    %@",strScore,strName]];
}
else
{
    [array addObject:[NSString stringWithFormat:@"%@                      %@",strScore,strName]];
}

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
NSArray *sorters = [[NSArray alloc] initWithObjects:sorter, nil];
[sorter release];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sorters];

NSUserDefaults *dfltsData = [NSUserDefaults standardUserDefaults];
[dfltsData setObject:sortedArray forKey:@"ScoreName"];
[dfltsData synchronize];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
                                                message:@"Score is saved."
                                               delegate:self
                                      cancelButtonTitle:@"Ok"
                                      otherButtonTitles:nil, nil];
[alert show];    
[alert release];  

}
4

2 に答える 2

4

これを行う

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if ([array count]>5)    
        return 5;
    else 
        return [array count];
}
于 2012-09-07T11:43:05.980 に答える
0

単純な関数を使用するのはどうですか。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSUserDefaults *dfltsData = [NSUserDefaults standardUserDefaults];
    NSArray *scoresArray = [dfltsData objectForKey:@"ScoreName"];
    return MIN(5, [scoresArray count]);
}
于 2012-09-07T11:44:11.937 に答える