Получить строку из массива для вызова метода - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь получить строку в моем вызове из массива. Но не повезло. Его передают в другой класс.

MainClass.h
#import First
@class First;

@interface MainClass : UIViewController{
NSMutableArray *listArray;
}
///////////////////
MainClass.m

    First *first = [[First alloc] init];

    listArray = [[NSMutableArray alloc]init];
        [listArray addObject:@"first"];
        [listArray addObject:@"second"];

    int Aslot = 0;
    int sumA;
float level = 5, insample = 10;

    NSString *slotA =[listArray objectAtIndex:ASlot];

           sumA = [slotA out:insample andlevels:level];

/////////
First.h
-(float)out:(float)insample andlevels:(float)level;

First.m
-(float)out:(float)insample andlevels:(float)level{

float outsample = insample + 10 * level;

return outsample;
}

Я хочу, чтобы slotA (класс) был равен строке из массива "first" или "second", чтобы он мог вызывать метод.

У меня есть таблица, которая, когда я выбираю первым, отправляет образцы и другие параметры другому классу, где выполняет обработку, а затем возвращает обратно в MainClass.

sumA = [first out: insample andlevels: level];

Но я получаю сообщение о том, что NSString может не отвечать на мои параметры: andlevels. Пожалуйста, помогите ..

1 Ответ

1 голос
/ 01 июля 2011

Редактировать:

Если я правильно понимаю, вы хотите динамически создать экземпляр класса, имя которого вы сохранили как NSString.Вы можете сделать это следующим образом:

int Aslot = 0;
int sumA;
float level = 5, insample = 10;

NSString *className = [listArray objectAtIndex:Aslot];
Class sampler = objc_getClass([className UTF8String]);
id instance = [[sampler alloc] init];
sumA = [instance out:insample andlevels:level];

// Do whatever you want with sumA here.

[instance release];

Если вы делаете это много, вы, вероятно, захотите сохранить экземпляр или сохранить классы в массиве вместо их имен, в зависимости отименно то, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...