2012-09-06 28 views
0
name     score 

    -----     -----  

    Abby     34 
    b      40 
    c      70 
    d      20 

我的代码是如何在UITableView中显示得分和名字得分从高到低?

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


scoreCardArray = [[[NSUserDefaults standardUserDefaults] valueForKey:@"ScoreCard"] mutableCopy]; 
if([scoreCardArray count] == 0) 
{ 
    scoreCardArray = [[NSMutableArray alloc] init]; 
    scorearray = [[NSMutableArray alloc] init]; 
    playerarray = [[NSMutableArray alloc] init]; 
} 
else 
{ 
    scorearray = [scoreCardArray objectAtIndex:0]; 
    playerarray = [scoreCardArray objectAtIndex:1]; 
    [scoreCardArray removeAllObjects]; 
} 

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

if([strNameOFPlayer length]==7) 
{ 
[scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 6) 
{ 
[scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 5) 
{ 
[scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 4) 
{ 
    [scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 3) 
{ 
    [scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 2) 
{ 
    [scorearray addObject:strScore]; 
[playerarray addObject:strNameOFPlayer]; 
} 
else if ([strNameOFPlayer length] == 1) 
{ 
    [scorearray addObject:strScore]; 
    [playerarray addObject:strNameOFPlayer]; 
    } 

    [scoreCardArray addObject:scorearray]; 
    [playerarray addObject:playerarray]; 

    NSUserDefaults *dfltsData = [NSUserDefaults standardUserDefaults]; 
    [dfltsData setObject:scoreCardArray forKey:@"ScoreCard"]; 
    [dfltsData synchronize]; 

    NSMutableArray *sortedArray = [self sortByfloatvalue:scoreCardArray array:playerarray]; 
    arrScores = [sortedArray objectAtIndex:0]; 
    arrPlayers = [sortedArray objectAtIndex:1]; 
    NSLog(@" %@ \n %@",scoreCardArray,playerarray); 

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

    -(NSMutableArray *)sortByfloatvalue:(NSMutableArray *)scorearray1 array:(NSMutableArray *)playerarray1 
    { 
     NSMutableArray *sortedArr = [NSMutableArray array]; 
     for(int k=0;k<[scorearray1 count];k++) 
     { 
      for(int l=k+1;l<[scorearray1 count];l++) 
      { 
       if([[scorearray1 objectAtIndex:k] floatValue] < [[scorearray1 objectAtIndex:l] floatValue]) 
       { 
        [scorearray1 exchangeObjectAtIndex:k withObjectAtIndex:l]; 
        [playerarray1 exchangeObjectAtIndex:k withObjectAtIndex:l]; 
       } 
      } 
     } 
     [sortedArr addObject:scorearray1]; 
     [sortedArr addObject:playerarray1]; 
     return sortedArr; 
    } 
+0

上午storeing成绩和姓名?NSUserDefaults的在数组对象,该对象传递给uitableview,并显示我的名字和得分,但问题是....我想分类得分高到低请帮助我? – areddy

+0

以上分数是不是排序顺序,请问如何排序nsuserdefaults的值? – areddy

回答

0

我只是发表你必须要考虑的东西。

请参阅NSArray文档中的sortedArrayUsingFunction:context:方法。

也有NSMutableArray

类似的方法,请检查这些。

0

查看NSMutableArray上的各种'sortUsing ...'方法 - 您不应该实现自己的排序。

例如这里是关于如何使用“sortUsingComparator”

sortUsingComparator一些DOC: 排序使用由给定NSComparator块中指定的比较方法的阵列。

- (void)sortUsingComparator:(NSComparator)cmptr 

您使用比较操作NSComparator块,如NSArray的sortedArrayUsingComparator:,例如:

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

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

    if ([obj1 integerValue] < [obj2 integerValue]) { 
     return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
}];