我正在尝试从数组中调用一个字符串。但没有运气。它被传递给另一个班级。
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(Class)等于数组“first”或“second”中的字符串,因此它可以调用该方法。
我有一个表,当我首先选择时,它会将样本和其他参数发送到另一个类,然后处理它然后返回MainClass。
sumA = [first out:insample andlevels:level];
但我收到一条错误消息,说NSString可能无法响应我的参数:andlevels。请帮忙..
答案 0 :(得分:1)
编辑:
如果我理解正确,您希望动态创建一个名称已存储为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];
如果你这么做很多,你可能想要保留实例或将类存储在数组中而不是它们的名字,具体取决于你正在做什么。