根据NSString的值访问数组

时间:2013-05-14 18:57:17

标签: objective-c string variables

在我的应用中,用户有十二个按钮可用,我已经定义了十二个NSMutableArray。如果用户单击按钮1,则应用应计算Comp1数组中的对象数,或者如果用户单击按钮2,则应用应计算Comp2数组中的对象数,等等上。

当用户点击按钮时,我会在NSMutableArray中保存相应NSString的名称 - 例如myString = @"Comp1"。我的问题是,如何使用NSMutableArray“定义”myString名称?

我希望有一种方法:[NSMutableArray arrayWithTitle:myString]

2 个答案:

答案 0 :(得分:4)

创建一个包含数组的字典。字典键将是您正在寻找的标题。

例如,当您想要检索计数使用时,将button1的数组插入字典:

NSInteger count = [myDictionary[@"Comp1"] count];

答案 1 :(得分:1)

如果数组是某个对象(您的视图或视图控制器)的属性,则可以使用KVC来获取它:

NSArray *myArray = [self valueForKey:myString];

但这确实是不良做法。为什么不将所有按钮放入数组中。将您的NSMutableArray放入相同大小的第二个数组中。然后你可以通过索引来引用它们。

标题

@property (nonatomic) NSArray *buttons;
@property (nonatomic) NSArray *arrays;

实施中,创建按钮或从nib文件加载按钮后(这应该可以进入viewDidLoadawakeFromNib):

self.button = @[button1, button2, button3 ... ];
self.arrays = @[array1, array2, array3 ... ];

然后,当用户点击一个按钮时:

- (IBAction)buttonTapper:(id)sender {
    UIButton *button = (UIButton *)sender;
    NSUInteger index = [self.buttons indexOfObject:button];
    NSMutableArray *theArray = [self.arrays objectAtIndex:index];
    // do something with the selected array.
}