只有NSMutableDictionary的最后一个值被添加到NSMutableArray中

时间:2013-08-04 12:52:24

标签: iphone nsmutablearray nsmutabledictionary object-code

我尽力搜索将NSMutableDictionary添加到NSMutableArray的答案。不幸的是,他们都要我使用“[allValues]”,这不是我想要的。

这是问题,

在头文件中,我定义了

NSMutableArray *arData;

在m文件中,

arData = [[NSMutableArray alloc] init];

NSMutableDictionary *mutableDictionary5 = [[NSMutableDictionary alloc]init];

for (i=0;i<[[[self rssParser]rssItems]count];i++)
{

    Lat = [[[[[self rssParser]rssItems]objectAtIndex:i]lat] doubleValue];
    Lng = [[[[[self rssParser]rssItems]objectAtIndex:i]lng] doubleValue];
    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(Lat, Lng);
    marker.title = [[[[self rssParser]rssItems]objectAtIndex:i]header];

[mutableDictionary5 setObject:marker.title forKey:@"title"];

[arData setValue:[mutableDictionary5 valueForKey:@"title"] forKey:@"title"];
}

“arData”只获取[[[[rssParser] rssItems] objectAtIndex:i] header]的最后一个值。我确信mutableDictionary5获取了所有值,因为我在代码末尾添加了以下内容,

 NSLog(@"mutableDictionary5 values=%@",[mutableDictionary5 allValues]);

它会打印标题的所有值。

我知道它不应该是setvalue,但是,我尝试使用[mutableDictionary5 allValues],“addobjects”,“allkeys”。他们没有工作。我该怎么做才能让NSMutableArray arData以“title”为键添加title的所有值?感谢。

抱歉我的英语不好,不是我的母语。

1 个答案:

答案 0 :(得分:1)

您错误地使用setValue代替addObject

[arData addObject:mutableDictionary5]; 

如果你在循环中为init 分配初始字典,这将有效 如果你想将数组简化为标题,请在循环之后执行

NSArray *titleArray = [arData valueForKeyPath:@"title"]; 

现在你有一个只包含标题的数组。

顺便说一句,你可以努力发明更好的变量名。请注意,按照约定,Objective-C变量名称以低上限开头,而类名称大写。