如何解决显示具有高分的名称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 \”获得分数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。