2011-09-02 82 views
1

我想将NSString传递给方法,并让该特定的NSString命名新的NSSMutableArray。混乱?编程方式如下所示:来自NSString的Objective-C标识符

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

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

+1

你为什么要这么做? – sidyll

+2

即使在这种可能的语言中,如果你认为你想动态地命名一个变量,那么你很可能会犯一些可怕的错误。 – geoffspear

+0

@sidyll例如,有一个包含“everythingOnMyDesk”的数组,并为“everythingOnMyDesk”中的每个项目创建新数组。所以如果我有一个“苹果”和一支“笔”,它会将它存储在“everythingOnMyDesk”中,并且会有新的名为“apple”和“pen”的数组。 – evdude100

回答

7

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

如果您需要能够将标签与阵列关联,我建议你使用一个NSDictionary做这样的事情

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

您可以有多个“评为”字典数组,如果你想要的,可以通过你给他们

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

看起来不错!我会玩弄它。 – evdude100

+0

我最喜欢的做法是'NSMutableDictionary * myDict; [myDict setValue:[NSArray arrayWithObjects:@“Object1”,@“Object2”,nil] forKey:@“My Array Name!”];' – evdude100

2

查找到key-value coding由属性的名称设置现有的属性值的名称访问它们,但似乎它不能创建一个新的属性。为此,你应该使用一本字典。

+0

谢谢你sir :) – evdude100