Цель C Эквивалент PHP "Переменные переменные"
В PHP и в JavaScript вы можете динамически использовать переменную, используя другую переменную как часть ее имени. Я не хочу использовать массив как часть решения. Может ли это быть достигнуто в Цели C? Я хотел бы сделать что-то вроде этого:
for (int i=1; i<6; i++) {
if([appRecord.answer(i) length] != 0){
self.textView.answer(i)ViewSingle.text = appRecord.answer(i);
}
}
2 ответа
Решение
Краткий ответ: Нет.
Длинный ответ: вид.
- Вы можете использовать массив, хранить там свои переменные и индексировать его.
- Как #1, если ваши объекты на самом деле являются элементами пользовательского интерфейса, и вы не хотите целую кучу
IBOutlets
затем используйтеIBOutletCollection
вместо. - Вы можете использовать словарь, хранить свои переменные как значения и искать их по ключу.
- Вы можете объявить все свои переменные как
@property
, а затем использовать[self valueForKey:]
искать их по имени. - Вы можете построить имя ивара в виде строки, а затем использовать что-то вроде
object_getInstanceVariable()
получить его значение напрямую (это похоже на № 3, за исключением того, что вам не нужно объявлять его как@property
). Это слишком сложно и, как правило, намного больше молотка, чем вам действительно нужно. - Если вы имеете дело с представлениями, вы можете назначить каждому представлению уникальный тег, а затем получить его с помощью
[superview viewWithTag:aTag]
, Я не рекомендую использовать этот подход.
РЕДАКТИРОВАТЬ: Обратите внимание, что это работает только с переменными экземпляра. Это не работает с глобальными / статическими переменными.
Нет. Но вы можете дать тег для просмотра и использования -viewWithTag:
,