0
   name                  score

   -----                 -----    

   Abby                   34  
    b                     40 
    c                     70
    d                     20

私のコードは

 -(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;
     }
4

2 に答える 2

0

私はあなたが考慮しなければならないことを投稿しているだけです。

NSArrayドキュメントのsortedArrayUsingFunction:context:メソッドを参照してください。

にも同様の方法がありますNSMutableArray

そちらをご確認ください。

于 2012-09-06T06:45:15.527 に答える
0

NSMutableArray のさまざまな 'sortUsing...' メソッドを確認してください。独自のソートを実装する必要はありません。

たとえば、「sortUsingComparator」の使用方法に関するドキュメントを次に示します。

sortUsingComparator: 指定された NSComparator ブロックで指定された比較方法を使用して配列を並べ替えます。

- (void)sortUsingComparator:(NSComparator)cmptr

NSArray の sortedArrayUsingComparator: などの比較操作で NSComparator ブロックを使用します。次に例を示します。

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;
}];
于 2012-09-06T06:45:20.130 に答える