Добавление словарного объекта в NSMutableString - PullRequest
0 голосов
/ 03 марта 2012

У меня есть NSMutableArray allAnswers

NSMutableArray *allAnswers = [[NSMutableArray alloc] init];

со значениями:

allAnswers --- (
        {
        PlayerName = Trfghuhhrf;
        Score = 1000;
    },
        {
        PlayerName = Test;
        Score = 333;
    },
        {
        PlayerName = DDDDDDDD;
        Score = 250;
    },
        {
        PlayerName = SSSSSSSSSSSSSSS;
        Score = 100;
    },
        {
        PlayerName = mn;
        Score = 100;
    }
)

Вот так я строю словарь.

    NSDictionary *answer = [NSDictionary dictionaryWithObjectsAndKeys:
                            name, PlayerKey,
                            [NSNumber numberWithInt:[score intValue]], ScoreKey,
                            nil];
    [allAnswers addObject:answer];


NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:ScoreKey ascending:NO];

[allAnswers sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];

NSLog(@"allAnswers --- %@",allAnswers);

for (NSDictionary *answer in allAnswers)
{
    NSLog(@"%@, %@", [answer objectForKey:PlayerKey], [answer objectForKey:ScoreKey]);

    NSMutableString *mString = [[NSMutableString alloc]init];
    [mString appendString:[answer objectForKey:PlayerKey]];
    [mString appendString:@" - "];
    [mString appendString:[answer objectForKey:ScoreKey]];

    NSLog(@"mString --******-- %@",mString);
}

Приложение ломается, когда я пытаюсь добавить [answer objectForKey: ScoreKey] к изменяемой строке. Я попытался преобразовать [answer objectForKey: ScoreKey] в (NSString), но это не помогло.

Пожалуйста, сообщите, что я делаю неправильно.

Извините за длинное описание.

Добавление журналов аварий:


2012-03-03 00: 43: 48.149 NumberTwins [38378: 10703] - [__NSCFNumber length]: нераспознанный селектор отправлен на экземпляр 0x9155400 2012-03-03 00: 43: 48.149 NumberTwins [38378: 10703] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__NSCFNumber length]: нераспознанный селектор, отправленный экземпляру 0x9155400' * Первый стек вызовов вызовов:

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Вы храните int как NSNumber для ключа ScoreKey, но вы не можете просто добавить это к строке, потому что это неправильный тип.Вам нужно преобразовать его в NSString.

. Вы не можете просто привести NSNumber к NSString, потому что это совсем другой тип;Вы должны использовать правильный метод NSNumber:

[mString appendString:[[answer objectForKey:ScoreKey] stringValue]];

Причина, по которой вы можете получить записанное значение, заключается в том, что помещение в журнал %@ вызывает метод description объекта.Этот метод объявлен в NSObject, и классы Framework реализуют его так, что он возвращает представление объекта в виде строки.

0 голосов
/ 04 марта 2012

Надеюсь, этот вам тоже поможет [mString appendFormat: "% @", [answer objectForKey: ScoreKey]];

...