当数组包含在NSDictionary中时设置NSArray值?

时间:2012-06-07 01:40:07

标签: ios nsarray nsdictionary

我想在字典中的数组中设置项目。 我在下面有一个NSDictionary,一个名为“currentCityNode”的实例。在该Dictionary中是一个数组项(除其他外)。数组项称为“TheConnections” 下面的代码成功读取了数组。

 NSArray *theConnectionsArray = [currentCityNode objectForKey:@"TheConnections"];
 (theConnectionsArray now contains the previously loaded values '3','7', and '9')

现在我想设置此数组中的一个值。将第二个值'7'设为'5'。

我尝试了一些变体,但还没能搞定。

[currentCityNode addObject:notsurewhattoputhere forKey:@"TheConnections"];

2 个答案:

答案 0 :(得分:1)

你的数组和字典必须是可变的,这样的东西应该可行。如果theConnectionsArray已经是可变的,那么你就不必使用mutableCopy

NSMutableArray *theConnectionsArray = [[currentCityNode objectForKey:@"TheConnections"] mutableCopy];
[theConnectionsArray replaceObjectAtIndex:1 withObject:@"5"];
[currentCityNode setObject:theConnectionsArray forKey:@"TheConnections"];

答案 1 :(得分:1)

如果您要检索的数组是可变的(NSMutableArray的实例):

[[currentCityNode objectForKey:@"TheConnections"] addObject:@"objectToAdd"];

如果数组只是NSArray

NSArray *array = [currentCityNode objectForKey:@"TheConnections"];
NSMutableArray *mutableArray = [array mutableCopy];
[mutableArray addObject:@"objectToAdd"];
[currentCityNode setObject:[NSArray arrayWithArray:mutableArray] forKey:@"TheConnections"];
[mutableArray release];

基本上如果数组是不可变的(因此无法轻易添加),您需要创建一个可变副本并将该副本分配回“TheConnections”。