Цель 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. Вы можете использовать массив, хранить там свои переменные и индексировать его.
  2. Как #1, если ваши объекты на самом деле являются элементами пользовательского интерфейса, и вы не хотите целую кучу IBOutlets затем используйте IBOutletCollection вместо.
  3. Вы можете использовать словарь, хранить свои переменные как значения и искать их по ключу.
  4. Вы можете объявить все свои переменные как @property, а затем использовать [self valueForKey:] искать их по имени.
  5. Вы можете построить имя ивара в виде строки, а затем использовать что-то вроде object_getInstanceVariable() получить его значение напрямую (это похоже на № 3, за исключением того, что вам не нужно объявлять его как @property). Это слишком сложно и, как правило, намного больше молотка, чем вам действительно нужно.
  6. Если вы имеете дело с представлениями, вы можете назначить каждому представлению уникальный тег, а затем получить его с помощью [superview viewWithTag:aTag], Я не рекомендую использовать этот подход.

РЕДАКТИРОВАТЬ: Обратите внимание, что это работает только с переменными экземпляра. Это не работает с глобальными / статическими переменными.

Нет. Но вы можете дать тег для просмотра и использования -viewWithTag:,

Другие вопросы по тегам