2013-07-11 40 views
0

自学后(主要来自本网站),我终于无法找到问题的解决方案。
我想用独特的名字轻松创建100万个NSMutableArrays。我的意思是,没有硬编码所有的单个阵列。
我想要做的是这样的:轻松创建100万个具有独特名称的NSMutableArrays

for (int i = 1; i <= 1000000; i++) { 
    NSString *arrayNumber = [NSString stringWithFormat:@"%d", i]; 
    NSString *millionArrayNumber = @"millionArrayNumber"; 
    NSString *arrayName = [millionArrayNumber stringByAppendingString:arrayNumber]; 
    NSMutableArray *[NSString arrayName] = [NSMutableArray array]; 
} 

我能理解为什么这不工作,但我想不出这样做的另一种方式。我想这可能是可能使用类似的东西:如果我更改代码以

[button setTag = 1]; 

for (int i = 1; i <= 1000000; i++) {  
    NSMutableArray *millionArray = [NSMutableArray array]; 
    [millionArray setTag: i]; 
} 

然后我会使用标签来控制阵列,你可以用按钮的功能。这虽然不适用于数组。
我希望我没有模棱两可。

+0

如何'NSMutableArray * [NSString arrayName] = [NSMutableArray array]; '这个代码工作?不显示错误? – Dilip

+0

是的,它抛出了一个错误。这是我**想要**做的。 – alicooke

+0

@ user2573287如何制作一个'NSMutableArray'并将其他1000000个'NSMutableArrays'添加到它?这样你就可以得到一个“唯一的名字”:它在数组中的索引。 – 2013-07-11 17:56:06

回答

1

我不知道如何将字符串转换为文字代码,但是我认为这是可能的。

但是,您总是可以将一百万个数组踢到一个NSMutableDictionary,并为每个数组提供唯一的键名称。

NSMutableDictionary *arrayStore = [NSMutableDictionary dictionary]; 
for (int i = 1; i <= 1000000; i++) { 
    NSString *arrayNumber = [NSString stringWithFormat:@"%d", i]; 
    NSString *millionArrayNumber = @"millionArrayNumber"; 
    NSString *arrayName = [millionArrayNumber stringByAppendingString:arrayNumber]; 
    arrayStore[arrayName] = [NSMutableArray array]; 
} 

,当然也为了得到你想要的以后,你只需要使用任何阵列:

NSMutableArray *uniqueArray = arrayStore[arrayName]; 

编辑:不知道,如果你想保留号码作为唯一密钥,这在下面的评论中提到,但如果是的话,你可以用这个做到这一点:

NSMutableDictionary *arrayStore = [NSMutableDictionary dictionary]; 
for (int i = 1; i <= 1000000; i++) { 
    arrayStore[@(i)] = [NSMutableArray array]; 
} 

而且随着访问(例如,序列号100):

NSMutableArray *uniqueArray = arrayStore[@100]; 
+0

同样,你可以有一个NSMutableArray存储所有其他数组,并将字符串转换为数字,然后将数字转换为字符串来访问它。当然,还有其他的考虑,比如记忆。曾经想过使用其他持久性存储,如数据库? SQLite免费使用iOS。 –

+0

'Array'ception。我喜欢。我认为它也会起作用。谢谢你的投入。 – alicooke

+0

@Travis我只是想说setObject:forKey:明确地将NSString作为关键字,但首先查找它并意识到它需要一个符合NSCopying协议的id,因此必须是一个“对象”。 NSNumber因此适合作为一个关键。刚刚学到了一些新的东西:) +1 – pnizzle