Вы создаете массив литералов NSStrings и делаете операторы case для целых чисел.Вы можете включить только целочисленные типы.
Проблема в том, что arrayWithObjects создает массив объектов, производных от NSObject, которые нельзя включить в объект (id).
Если вы хотите сохранитьмассив чисел, тогда один вариант - хранить объекты NSNumber, а не полагаться на хрупкость хранения строк, которые, как вы надеетесь, являются числами.Это работает:
NSArray *arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], nil];
switch ([[arr objectAtIndex:1] intValue]) {
case 1:
NSLog(@"1");
break;
case 2:
NSLog(@"2");
break;
default:
break;
}
Это выводит:
2012-03-05 23:23:46.798 Craplet[82357:707] 2