2013-05-14 24 views
0

在我的應用程序中,用戶有12個按鈕可用,並且我定義了12個NSMutableArray s。如果用戶點擊按鈕一,應用程序應計算Comp1陣列中的對象數量,或者如果用戶單擊按鈕二,應用程序應計算Comp2陣列中的對象數量,依此類推。根據NSString的值訪問數組

當用戶單擊按鈕時,我將相應的NSMutableArray的名稱保存在NSString中 - 例如myString = @"Comp1"。我的問題是,如何用myString「定義」NSMutableArray名稱?

我希望有一種方法,如:[NSMutableArray arrayWithTitle:myString]

+1

創建一個數組來保存你的陣列。可能重複的[基於int計數創建多個變量](http://stackoverflow.com/q/2231783),[語法幫助:變量作爲對象名稱](http://stackoverflow.com/q/7940809)[是否有可能引用一個字符串和一個int變量?](http://stackoverflow.com/q/6049175) –

+1

你想用什麼名字?這不足以保存一個指向數組的指針嗎? –

回答

4

創建一個包含數組的字典。字典鍵將是您要查找的標題。

例如,插入按鈕1的陣列到字典,當你想要檢索的數使用:

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

你打了我幾分鐘......這是迄今爲止最好的方式 – katzenhut

+2

@katzenhut在他們的名字中有多於3個變量,索引後綴很少是做任何事情的最佳方式。 – DrummerB

+0

@DrummerB這很接近「根據NSString的值訪問數組」,這是合理的。 – katzenhut

1

如果數組是一些對象(您的視圖或視圖控制器)的屬性,你可以使用KVC得到它:

NSArray *myArray = [self valueForKey:myString]; 

但這真是不好的做法。你爲什麼不把所有的按鈕放入數組中。把你的NSMutableArray放入第二個相同大小的數組中。然後你可以通過索引來引用它們。

在你

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

在你實現,創建按鈕或從榫文件加載它們(所以這應該很可能會進入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. 
}