显示具有高分的名称iPhone应用程序

问题描述

| 我想做的就是在分数列表中添加一个名称。到目前为止,我已经将名称保存为Nsstring,并将我的得分保存为整数,以后我将要按从高到低的顺序(分数)进行排序。下面是我的代码,将分数作为整数保存到plist中,然后在我的高分视图中,我从plist调用该分数并显示它。我想我将需要使用NSDictionary来保存名称的字符串和分数的整数。这是我遇到的麻烦,如果有人可以提供帮助,我们将不胜感激。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
Nsstring *documentsDirectory = [paths objectAtIndex:0];

Nsstring *scoresListPath = [documentsDirectory stringByAppendingPathComponent:@\"scores.plist\"];

scoresList = [[NSMutableArray arrayWithContentsOfFile:scoresListPath] retain];

if (scoresList == nil) {
    scoresList = [[NSMutableArray array] retain];




- (void)addHighscore:(float)finalscore {
    [scoresList addobject:[NSNumber numberWithFloat:finalscore]];

    [scoresList sortUsingSelector:@selector(compare:)];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES);
    Nsstring *documentsDirectory = [paths objectAtIndex:0];

    Nsstring *scoresListPath = [documentsDirectory stringByAppendingPathComponent:@\"scores.plist\"];
    [scoresList writetoFile:scoresListPath atomically:YES];
}
    

解决方法

        您的基本思想正确,但是您要做的不仅仅是保存一个NSNumbers数组,而是保存一个NSDictionaries数组。 因此,请保持NSMutableArray的状态不变,只需为其添加分数即可:
NSDictionary *score = [NSDictionary dictionaryWithObjectAndKeys: theName,@\"name\",[NSNumber numberWithFloat:finalScore],@\"finalScore\",nil];
[scoresList addObject: score];
scoreList仍将正确写出其plist,因为NS [Mutable] Array包含仅包含数字和字符串的字典,并且这些字典知道如何将自己写到plist中(请参阅NSCoder)。 当您读回数组时,-objectAtIndex:i将是一个NSDictionary,您可以使用-objectForKey:@ \“ name \”获得名称,并使用-objectForKey:@ \“ finalScore \”获得分数。