我已尽力搜索将NSMutableDictionary添加到NSMutabableArray的答案。不幸的是,他们都要求我使用"[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"只获取[[self-rssParser]rssItems]objectAtIndex:i]header]的最后一个值。我确信mutableDictionary5会获取所有值,因为我在代码末尾放了以下内容,
NSLog(@"mutableDictionary5 values=%@",[mutableDictionary5 allValues]);
它打印标题的所有值。
我知道它不应该是setvalue,但是,我尝试使用[mutableDictionary5AllValues]、"addobjects"、"allkeys"。它们不起作用。我应该怎么做才能让NSMutableArray arData添加以"title"为键的title的所有值?谢谢
抱歉我的英语不好,这不是我的母语。
您错误地使用了setValue
而不是addObject
。
[arData addObject:mutableDictionary5];
如果在循环的中为init分配一个新字典,这将起作用
如果您想将数组减少为标题,请在循环后执行此操作:
NSArray *titleArray = [arData valueForKeyPath:@"title"];
现在您有一个只包含标题的数组。
顺便说一句,你可以努力发明更好的变量名。注意,按照Objective-C中的惯例,变量名以低大写开头,而类名则大写。