2012-09-06 73 views
0

我想排序我的计分板,但计分板按名称排序,但我想按分数排序(即从高到低)分数有助于解决this.i存储的玩家名称并在一个标签中评分详情。
请帮我 在此先感谢如何按整数排序数组

ASD 45 ASD 66 存款准备金率55个 TES 42

我想告诉喜欢

ASD 66 存款准备金率55 ASD 45个 TES 42

-(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]]; 
    int intScore = iTap; 
    NSLog(@"iTap data is:--> %d",intScore); 

    if([strNameOFPlayer length]==7) 
     [array addObject:[NSString stringWithFormat:@"%@     %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 6) 
     [array addObject:[NSString stringWithFormat:@"%@      %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 5) 
     [array addObject:[NSString stringWithFormat:@"%@      %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 4) 
     [array addObject:[NSString stringWithFormat:@"%@       %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 3) 
     [array addObject:[NSString stringWithFormat:@"%@       %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 2) 
     [array addObject:[NSString stringWithFormat:@"%@        %@",strName,strScore]]; 
    else if ([strNameOFPlayer length] == 1) 
     [array addObject:[NSString stringWithFormat:@"%@        %@",strName,strScore]]; 


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


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

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

你应该考虑使用字典来代替。 – Martol1ni

回答

3

这里您要添加字符串(包含名字和分数)给数组。相反,使用名称(NSString *)创建一个模型类并将其分数(NSNumber *)成员并将它们添加到数组中。

的分类,

NSArray *sortedArray = [yourUnsortedArray sortedArrayUsingComparator: ^(id obj1, id obj2) { 

    if ([[obj1 score] integerValue] > [[obj2 score] integerValue]) { 
     return NSOrderedDescending; 
    } 

    if ([[obj1 score] integerValue] < [[obj2 score] integerValue]) { 
     return NSOrderedAscending; 
    } 
    return NSOrderedSame; 
}]; 
+0

+1(现在我的剪贴板中的答案几乎相同)。但是你为什么要做'(NSComparisonResult)'强制转换? –

+0

感谢&Adhira ......你能否以确切的方式告诉我它应该如何?因为我没有得到你所说的。 – anilkumar07

+0

@凯...你能否把这个链接放在这里......因为我无法找到你向我建议的答案......谢谢。 – anilkumar07