我的分数显示的顺序不正确。我一直在努力制作一个使用@selector(compare:)
的方法,但却没有运气。
这是我正在使用的代码,我想要从最高到最低显示它。我也想拥有它,这样如果你第一次加载应用程序就会创建一个空数组,这样如果用户试图查看高分数,它就不会使应用程序崩溃。
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];
}
答案 0 :(得分:0)
您的代码失败的原因是因为arrayWithContentsOfFile:
返回不可变数组,即使它在NSMutableArray
上调用。你应该像你一样制作一个你读过文件的数组的可变副本,
scoresList = [[NSArray arrayWithContentsOfFile:scoresListPath] mutableCopy];
这将为您提供一个NSMutableArray
对象,可以将其添加到。
答案 1 :(得分:0)
不确定最低但是,您可以使用GK LeaderBoard ViewController类来计算最高分数。有关详细信息,我建议您阅读以下链接。谢谢