2011-08-04 334 views
0

我想插入一個對象到NSDictionary的數組,但無法找出如何。所有示例都顯示瞭如何使用insertObject:atIndex插入NSDictionary的數組,但是這不會在字典鍵下插入對象。插入一個對象到NSDictionary的NSMutablearray

我現在排列如下:

NSArray *aaa = [NSArray arrayWithObjects:@"Disable" ,nil]; 
NSDictionary *aaaDict = [NSDictionary dictionaryWithObject:aaa forKey:@"Computers"]; 
NSArray *bbb = [NSArray arrayWithObjects:@"Enable", nil]; 
NSDictionary *bbbDict = [NSDictionary dictionaryWithObject:bbb forKey:@"Computers"]; 
NSArray *ccc = [NSArray arrayWithObjects:@"Enable", nil]; 
NSDictionary *cccDict = [NSDictionary dictionaryWithObject:ccc forKey:@"Computers"]; 

[listOfItems addObject:aaaDict]; 
[listOfItems addObject:bbbDict]; 
[listOfItems addObject:cccDict]; 

我想這樣做,但有一個關鍵的「計算機」:

NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil]; 
    NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"]; 
    [listOfItems insertObject:ar atIndex:1]; 

再次 - 它確實增加了新的數組,但不在關鍵的「電腦」下。我在這裏錯過了什麼?

謝謝!

+0

你是什麼意思?什麼不工作? 'listOfItems',大概是'NSArray',沒有任何鍵的概念(它不是字典)。 –

回答

3

你可能想寫的
[listOfItems insertObject:arDict atIndex:1];
代替
[listOfItems insertObject:ar atIndex:1];

您要添加的陣列,而不是像字典中的第一部分,你的題。

1

我不知道我確切地理解你想要做什麼,但是你的意思是插入ar對象或arDict對象嗎?我覺得你的代碼應該看起來像

NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil]; 
NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"]; 
[listOfItems insertObject:arDict atIndex:1]; 
0

當它添加新對象時,必須先獲取NSDictionary。所以基本上你使用的字典是錯的。你做了什麼,相當於

[listOfItems addObject:aaa];,同樣BBB和CCC和AR

你真正想要做的是什麼對象添加到字典,而不是一個數組。

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
[dictionary addObject:[NSArray arrayWithObjects:@"Disable" ,nil] forKey:@"Key1"]; // your keys need to be unique 
[dictionary addObject:[NSArray arrayWithObjects:@"Enable", nil] forKey:@"Key2"]; 
[dictionary addObject:[NSArray arrayWithObjects:@"Enable", nil] forKey:@"Key3"]; 

[dictionary addObject:[NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil] forKey:@"Key4"]; 
1

你的意思是你想添加另一個數組到你的listOfItems數組中的字典嗎?如果是這樣的情況下,它需要一個嵌套的方法調用這樣:

[[listOfItems objectAtIndex:0] setObject:ar forKey:@"Computers"]; 
0

隨着泄漏固定問題

NSArray *ar = [NSArray arrayWithObjects:@"xxxx", @"yyyy", @"zzzz", nil]; 
NSDictionary *arDict = [NSDictionary dictionaryWithObject:ar forKey:@"Computers"]; 
[listOfItems insertObject:arDict atIndex:1]; 
[ar release]; // fixed the leak 
[arDict release]; // fixed the leak 
相關問題