来自NSString的Objective-C标识符

时间:2011-09-02 17:30:25

标签: objective-c nsstring nsarray

我想将NSString传递给一个方法,并将该特定的NSString名称作为新的NSSMutableArray。混乱?以编程方式看起来像这样:

+ (void)newMutableArrayWithName:(NSString*)theArrayName
{
     NSLog(@"Creating an array that is named: %@",theArrayName);
     NSMutableArray* theArrayName = [[NSMutableArray alloc] init];
}

不幸的是,“theArrayName”与传递给该方法的参数无关。有什么方法可以实现吗?

2 个答案:

答案 0 :(得分:7)

变量名称由编译器使用,并在编译时设置,而不是在运行时设置。

如果您需要能够将标签与数组相关联,我建议您使用NSDictionary来执行此类操作

NSString *theArrayName = @"My Cool Array";
NSMutableArray *theArray = [NSMutableArray array];
NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                                      theArray, theArrayName, nil];

如果你愿意,你可以在字典中有多个“命名”数组,并且可以通过你给它们的名字访问它们

[theDictionary objectForKey:@"My Cool Array"];

答案 1 :(得分:2)

查看key-value coding按属性名称设置现有属性的值,但似乎无法创建新属性。为此,您应该使用字典。