显示具有高分的名称(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 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章
我可以提交具有相同 Icon.png 但不同包名称的 iPhone 应用程序吗