我尽力搜索将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的所有值?感谢。
抱歉我的英语不好,不是我的母语。
答案 0 :(得分:1)
您错误地使用setValue
代替addObject
。
[arData addObject:mutableDictionary5];
如果你在循环中为init 分配初始字典,这将有效 如果你想将数组简化为标题,请在循环之后执行:
NSArray *titleArray = [arData valueForKeyPath:@"title"];
现在你有一个只包含标题的数组。
顺便说一句,你可以努力发明更好的变量名。请注意,按照约定,Objective-C变量名称以低上限开头,而类名称大写。