В Objective-C нет абсолютно никакой причины указывать имя переменной во время выполнения.Переменные для вас, программиста (и компилятора).Вам нужно немного переосмыслить свою программу.
Вам нужно, чтобы каждый экземпляр вашего класса Foo
был связан со строкой, введенной пользователем.Поэтому вы должны дать классу переменную экземпляра для хранения этой строки.Когда вы создаете объекты, поместите их в коллекцию - либо, как предлагает PengOne, словарь, в котором вы можете снова получить к ним доступ с помощью предоставленной строки, или просто массив.
Если вы действительно думаете, что вы это сделаетенужно извлекать экземпляры в первую очередь по этой строке , тогда словарь является хорошим выбором.Если вам только иногда нужно получить доступ к экземплярам таким образом, используйте массив и посмотрите на indexOfObjectPassingTest:
NSUInteger idx = [myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
if( [[obj name] isEqualToString:stringToTest] ){
*stop = YES;
return YES;
}
}];