0

我已尽力寻找将 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”仅获得 [[[[self rssParser]rssItems]objectAtIndex:i]header] 的最后一个值。而且我确信 mutableDictionary5 获得了所有值,因为我在代码末尾添加了以下内容,

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

它打印标题的所有值。

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

对不起我的英语不好,这不是我的母语。

4

1 回答 1

1

您错误地使用setValue而不是addObject.

[arData addObject:mutableDictionary5]; 

如果您在循环分配初始化一个新字典,这将起作用。
如果要将数组减少为仅标题,请在循环后执行此操作:

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

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

顺便说一句,您可以努力发明更好的变量名称。请注意,按照惯例,Objective-C 变量名以小写字母开头,而类名大写。

于 2013-08-04T14:08:59.003 回答