问题描述
|
我想做的就是在分数列表中添加一个名称。到目前为止,我已经将名称保存为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 \”获得分数。