我在这里有点情况......
我将一个字符串传递给一个函数,在该函数中我需要创建一个名称为字符串值的数组
比方说,例如:-(void) function : (NSString *) arrayName; //let arrayName = @"foo";
在这个函数中,我需要创建一个名为“foo”的数组,即传递参数的值
任何人都可以帮忙请:|
在此先感谢;)
答案 0 :(得分:2)
这在Objective-C中是不可能的,但您可以使用例如将字符串映射到数组的字典。
E.g。假设类似以下属性:
@property (readonly, retain) NSMutableDictionary *arrays;
...您可以按名称存储数组:
- (void)function:(NSString *)arrayName {
NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", nil];
[self.arrays setObject:array forKey:arrayName];
}
...并像这样访问它:
NSArray *array = [self.arrays objectForKey:arrayName];
答案 1 :(得分:2)
数组没有名称。变量具有名称,但变量是其范围的本地变量,因此一旦离开该方法的范围,使用名为“foo”的变量是没有意义的;您可以根据需要为变量命名,它可以正常工作。例如:
- (void) function:(id)whatever {
NSArray * myVariable = [NSArray arrayWithStuff....];
//use myVariable
}
你真的想做什么?
答案 2 :(得分:0)
C是一种编译语言,其中任何源代码名称(对于变量,函数等)在运行时都不可用(除非可能选择调试,-g除外)。 Objective C运行时增加了按名称查找Obj C方法和类的能力,但不是对象,也不是任何C东西。所以除非你建立自己的迷你语言解释器结构以供参考,否则你运气不好。有很多方法可以做到这一点,但简单的语言通常会构建某种变量表,类似于字典,数组或对象的链接列表(结构,元组等),包含字符串名称,对象指针(也许类型,大小等。)。