有没有办法使用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
作为计数操作的数组名称,但没有骰子。我知道这有点奇怪,但我可以预见到有很多有用的理由要做到这一点,我现在正在另一个应用程序中找到一个。
答案 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];
此方法可能会返回对数组的引用。它应该这样工作。