Отображение имени с рекордом (приложение для iPhone) - PullRequest
0 голосов
/ 18 июня 2011

То, что я хочу сделать, это добавить имя в мой список результатов.На данный момент у меня есть имя, сохраняемое как NSString, и моя оценка сохраняется как целое число, и позже я захочу упорядочить их от высокого к низкому (оценки).Ниже приведен мой код, который сохраняет счет в виде целого числа в листе, а затем в моем представлении с высоким счетом я вызываю этот счет из списка и отображаю его.Я думаю, что мне нужно будет использовать 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 Ответ

0 голосов
/ 11 июля 2011

У вас есть правильная основная идея, но вместо сохранения только массива NSNumbers все, что вам нужно сделать, это сохранить массив NSDictionaries.

Так что оставьте свой NSMutableArray таким, какой он есть, и просто добавьтебаллы за него:

NSDictionary *score = [NSDictionary dictionaryWithObjectAndKeys: theName, @"name", [NSNumber numberWithFloat:finalScore], @"finalScore", nil];
[scoresList addObject: score];

ScoreList по-прежнему будет правильно записывать свой список, потому что массив NS [Mutable] содержит словари, которые содержат только цифры и строки, и они знают, как записать себя в список.(см. NSCoder).

Когда вы читаете свой массив, -objectAtIndex: i будет NSDictionary, и вы можете получить имя с помощью -objectForKey: @ "name" и счет с помощью -objectForKey: @"finalScore".

...