2011-05-27 109 views
1

我只需要一些帮助来创建一个可以存储多个字典的数组。 我:如何用字典创建数组?

.H

NSArray * projects; 
NSDictionary *project1; 
NSDictionary * project2; 

.M

projects = /* What should I write here to store the 
       above two dictionaries in my array. */ 

感谢,

回答

6
projects = [[NSArray alloc] initWithObjects:project1, project2, nil]; 
1

基本上(这将是正确的或不完全正确取决于你的实际代码,声明,属性等)。因为你宣布projects作为NSArray,你可以做到以下几点:当它超出范围,除非你保留它

projects = [NSArray arrayWithObjects: project1, project2, nil]; 

这个变量将消失神奇。

或者,如果你声明projects作为NSMutableArray并与属性(retain, nonatomic)的属性,你可以做这样的事情:

NSMutableArray *a = [[NSMutableArray alloc] initWithObjects:project1, project2, nil]; 
self.projects = a; 
[a release]; 

有几种方式来实现自己的目标,这取决于你的整体需求阵列。

+0

您对于可变对象的理解完全错误。 – kovpas 2011-05-27 20:46:33

+0

@kovpas:我不同意;我只是提供了一种替代方法,旨在探索如何初始化数组的可能性,因为OP没有真正提供有关阵列将如何使用的任何线索。也许OP不理解可变对象和不可变对象之间的区别,现在他们还有其他的东西需要去了解。也许你会解开我的答案...... – 2011-05-27 20:50:29

+0

所以,在这种情况下,你可以建议使用UITableView而不是NSArray。以防万一,如果我们不知道OP真正想说些什么;)。 – kovpas 2011-05-27 20:53:28

1

我不知道,如果你正在寻找的是更复杂那么这个,而是:

projects = [[NSArray alloc ] initWithObjects:project1,project2, nil]; 

应该工作。

如果你在追求更复杂的东西,那么这让我知道我会修改我的答案。

+0

可以说我有n个数字化词典,我希望它们都存储在NSArray中,比如项目0,item1等。 – Ashutosh 2011-05-27 20:51:52

+0

Isn那不就是他写的吗?你将能够从[projects objectAtIndex:n]获取NSDictionary; – LuckyLuke 2011-05-27 20:54:18

+0

你是否确切地知道你会有多少个字典,或者每次调用这个类时数量会有所不同。如果你知道n,那么你可以使用一个循环来通过调用InsertObject将每个字典添加到一个NSMutableArray中。http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference。 html – CodeGuru 2011-05-27 21:00:44

0
 
arr = [[NSArray alloc ] initWithObjects:dict1,dict2, nil];