使用NSString内容作为NSArray名称

时间:2011-06-17 19:21:41

标签: objective-c

有没有办法使用NSString的内容作为NSArray指针名称?这可能是不可用的,但也许还有另外一种方法:

NSString*one=@"hi";
NSString*two=@"yo";

NSArray*testarray=[[NSArray alloc] initWithObjects:one, two, nil];

NSLog(@"actual count: %i", [testarray count]);

NSString*testname=@"testarray";
NSLog(@"test count: %i",[ --insert here to get array name from testname-- count]);

我已经尝试了各种猜测,我可以在那里插入使用我的testname作为计数操作的数组名称,但没有骰子。我知道这有点奇怪,但我可以预见到有很多有用的理由要做到这一点,我现在正在另一个应用程序中找到一个。

3 个答案:

答案 0 :(得分:2)

您可以使用键值编码(请参阅Key Value Coding Programming Guide)。

请注意,执行此类代码(如问题中的代码)通常是一个糟糕的设计。如果您需要这样做,您应该考虑检查您的代码设计(在某些极少数情况下可能是唯一的方法,但至少如果您需要这样做,您应首先检查它是唯一的解决方案)

使用KVC对于将值绑定到模型或类似的特定内容非常有用,但如果您可以避免使用直接的ivars / @属性,则通常不是首选方法。

答案 1 :(得分:1)

NSString*one=@"hi";
NSString*two=@"yo";

NSDictionary *testDic=[NSDictionary dictionaryWithObjectsAndKeys:
              [NSArray arrayWithObjects:one, two, nil], 
              @"testarray" ,nil];

NSLog(@"actual count: %i", [testarray count]);

NSString*testname=@"testarray";
NSLog(@"test count: %i",[[testDic objectForKey:testname] count]);

答案 2 :(得分:0)

我不确定这是否是你需要的,但是......

您可以按名称调用方法:

NSString *methodName = @"...";
SEL selector = NSSelectorFromString(methodName);
[objectRef performSelector:selector];

此方法可能会返回对数组的引用。它应该这样工作。