Как динамически настраивать имена и вызовы методов с помощью Objective-C
Автор вопроса: MarcZeroОтветов: 5
Я пытаюсь сжать свой код для метода, и мне было интересно, как я смогу достичь следующего:
У меня есть несколько переменных, которые отличаются только своим количеством, например:
int intVariable1
int intVariable2
UILabel Label1
UILabel Label2
BOOL bool1
BOOL bool2
и Т. Д.
Итак, я хочу вызвать метод и передать int. Этот int будет определять, над какими целыми числами, UILablels и BOOL будут работать. Таким образом, если бы в методе была передана 1, эти переменные работали бы следующим образом:
- (void) DyanamicMethod: (int) inputNumber {
//something that uses the inputNumber to act on the 1 variables
intVariable1 = someValue;
[Label1 setText:someText];
bool1 = YES;
}
Очевидно, что если бы было передано 2, я бы хотел, чтобы переменные были 2-го типа. Я предполагаю, что вы каким-то образом сделаете что-то с созданием строки, но я не уверен, как это настроить, чтобы использовать ее в качестве имени переменной. Любое понимание будет оценено. Спасибо за уделенное время.
Имейте в виду, что индексы массивов отсчитываются от нуля, поэтому в массивах выше переменная "1" имеет индекс 0, а переменная "2" - индекс 1. Ваш метод также может просто взять inputNumber и вычесть из него единицу, чтобы получить индекс массива.
Ответ 2 · рейтинг 4 · gcamp
Вы можете использовать кодирование "ключ-значение".
- (void) DyanamicMethod: (int) inputNumber {
//something that uses the inputNumber to act on the 1 variables
NSString* key = [NSString stingWithFormat:@"Label%i", number];
UILabel* label = [self valueForKey:key];
label.text = newString;
}
Ответ 3 · рейтинг 3 · Eld
Если вам нужно что-то подобное, вы можете сохранить NSArray всех меток ... Как в разделе интерфейса класса: