Как отметили другие отвечающие с новым синтаксисом массива можно довольно легко построить массив всех объектов но он сохранит старые значения, даже если впоследствии вы измените значения исходных иваров. Это может быть или не быть тем, что вам нужно.
Если вы настроены на то, чтобы ваши переменные были единичными (в отличие от массивов), вы можете использовать кодирование с ключом для доступа к ним программно. Ключевое значение кодирования также известно как KVC.
Метод, который составляет valueForKey:
и может использоваться как на self
, так и на других объектах.
MyClass *obj = ... // A reference to the object whose variables you want to access
for (int i = 1; i <= 3; i++) {
NSString *varName = [NSString stringWithFormat: @"var%d", i];
// Instead of id, use the real type of your variables
id value = [obj valueForKey: varName];
// Do what you need with your value
}
Существует больше о КВЦ в docs.
В интересах полноты причина этого прямого доступа заключается в том, что стандартный объект, совместимый с KVC, наследует метод класса, называемый accessInstanceVariablesDirectly
. Если вы не хотите поддержать этот прямой доступ, тогда вы должны переопределить accessInstanceVariablesDirectly
, чтобы он возвращал NO
.
Ответ не – Ares