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

Posted

技术标签:

【中文标题】显示具有高分的名称(iPhone 应用程序)【英文标题】:Displaying a name with a highscore (iPhone app) 【发布时间】:2011-06-18 16:19:22 【问题描述】:

我想做的是在我的分数列表中添加一个名字。到目前为止,我有一个名称被保存为 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, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *scoresListPath = [documentsDirectory stringByAppendingPathComponent:@"scores.plist"];
    [scoresList writeToFile:scoresListPath atomically:YES];

【问题讨论】:

【参考方案1】:

您的基本想法是正确的,但您所要做的就是保存一个 NSDictionaries 数组,而不是只保存一个 NSNumber 数组。

所以保持 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" 获取分数。

【讨论】:

以上是关于显示具有高分的名称(iPhone 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章

2 个具有相同名称的 iPhone 应用程序。这怎么可能?

我可以提交具有相同 Icon.png 但不同包名称的 iPhone 应用程序吗

如何为一个应用显示不同的名称?我想在 Iphone 和 App 中显示应用程序的名称

iPhone 应用程序:视网膜显示的图像未显示

iPhone 应用程序显示名称

如何在 iPhone 应用程序中本地化捆绑显示名称?