Это базовый пример, который, я знаю, можно упростить, но для тестирования я бы хотел сделать это таким образом. Я хочу установить переменную на основе добавляемой строки (переменные «cam0» и «pos1» уже объявлены в классе). Добавляемая строка по существу будет индексом, и я бы повторил цикл, чтобы назначить камеры (cam0, cam1 ..) различным позициям (pos0, pos1 ..).
cam0 определяется как UIImageView
pos1 определяется как CGRect
Это работает для переменной NSString с именем coverIndex:
NSString* text = [[NSString alloc] initWithString:@""];
NSLog(@"%@",(NSString *)[self performSelector:NSSelectorFromString([text stringByAppendingString:@"coverIndex"])]);
Правильная строка, которую я установил для coverIndex, была зарегистрирована в консоли.
Теперь вернемся к моему UIImageView и CGRect. Я хочу, чтобы это сработало.
NSString* camText = [[NSString alloc] initWithString:@"cam"];
NSString* posText = [[NSString alloc] initWithString:@"pos"];
[(UIImageView *)[self performSelector:NSSelectorFromString([camText stringByAppendingString:@"0"])] setFrame:(CGRect)[self performSelector:NSSelectorFromString([posText stringByAppendingString:@"1"])]];
Моя ошибка: "Запрошено преобразование в нескалярный тип"
Это единственный способ, который я нашел, чтобы делать подобные вещи (и заставить работать NSLog), но я все еще верю, что есть более простой способ.
Большое спасибо за любую помощь:)