我的应用程序中有一个用户输入,根据该用户输入,我需要创建的阵列数量发生变化(用户输入我需要分割输入数据流的通道数量,每个通道有一个数组)。通道数可以是4到32的任意倍数。我想知道是否有一种方法可以自动初始化数组,也许使用 for 循环,就像在这个伪代码中一样:
for(initialization, numberOfChannels, increment) {
NSString (set array name to channel%dArray, i);
NSMutableArray *channeliArray = [[NSAMutablerray alloc] init];
}
我看过的每个地方,我都没有找到任何方法来动态设置数组的名称,因此允许像上面那样进行初始化。即使使用2D阵列也会遇到同样的问题。任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
根据@Jonah的评论使用二维数组 -
self.channels=[NSMutableArray new];
for (int i=0;i<numberOfChannels;i++) {
[self.channels addObject:[NSMutableArray new]];
}
然后您可以通过索引访问特定频道的数组 -
NSMutableArray *channel=[self.channels objectAtIndex:channelNumber];
或者,如果您想根据伪代码使用通道名称,请使用数组字典
self.channels=[NSMutableDictionary new];
for (int i=0;i<numberOfChannels;i++) {
[self.channels setObject:[NSMutableArray new] forKey:[NSString stringWithFormat:@"channel%dArray",i]];
}
然后您可以按名称访问特定频道的数组 -
NSMutableArray *channelArray=[self.channels objectForKey:@"channel3Array"];