0

私はゲームアプリケーションを開発しています。そのアプリでは、nsuserdefaultsに名前、スコアを保存しています....しかし、私の要件によれば、スコアに基づいて名前とスコア(高から低)を保存したい....解決策はありますかnsuserdefaults でスコアをソートするため... 自分のハイスコアを一番上に表示したい

ありがとうございます

-(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([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]];

   NSUserDefaults *dfltsData = [NSUserDefaults standardUserDefaults];
   [dfltsData setObject:array 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

1 に答える 1

1

次のように NSUserDefault から配列を取得します。

NSMutableArray *arrScores = [[NSUserDefaults standardUserDefaults] ObjectforKey:@"ScoreName"];

ソート arrScores には、以下のメソッドのみを使用して strScore 値のみを含める必要があります。

-(NSMutableArray *)sortByfloatvalue:(NSMutableArray *)array
{ 

  for(int i=0;i<[array count];i++)
  {
    for(int j=i+1;j<[array count];j++)
    {
        if([[array objectAtIndex:i] floatValue] < [[array objectAtIndex:j] floatValue])
        {
            [array exchangeObjectAtIndex:i withObjectAtIndex:j];
        }
    }
  }
  return array;
}
于 2012-09-04T06:47:10.527 に答える