Странный сбой NSDictionary - PullRequest
       4

Странный сбой NSDictionary

0 голосов
/ 14 сентября 2010

У меня есть следующий код:

NSDictionary *dict = [[NSDictionary alloc]
          initWithObjectsAndKeys:myarray1, @"array1", myarray2, @"array2" nil];

NSArray *shorts =[[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];

for (NSString *dir in shorts) {
    NSArray *tempArr = [dict objectForKey:dir];
    for (NSString *file in tempArr ) {
        NSLog(@"%@", file);
    }
}

Где myarray1 и myarray2 - это NSArrays.

Когда я выполняю код, приложение падает с:

-[NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1d134

Это, очевидно, tempArr, который не распознается как NSArray. Я знаю, что [dicFiles objectForKey:dir] возвращает объект типа id, но как универсальный тип я не могу понять, что я делаю неправильно.

1 Ответ

1 голос
/ 14 сентября 2010

Вы не включили код, который инициализирует myarray1 и myarray2, но, очевидно, один или оба из них являются экземплярами NSString, а не NSArray. Вы можете проверить это после извлечения одного из объектов из массива следующим образом:

if (![tempArr isKindOfClass:[NSArray class]])
{
    NSLog(@"Unable to process temp array because it's an instance of %@", [tempArr class]);
}
else
{
    // for loop code goes here...
}
...