Только последнее значение NSMutableDictionary добавляется в NSMutableArray

Я старался изо всех сил искать ответы, чтобы добавить NSMutableDictionary к NSMutableArray. К сожалению, все они попросили меня использовать "[allValues]", а это не то, что я хочу.

Вот проблема,

В заголовочном файле я определил,

NSMutableArray *arData;

И в файле м,

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]]. И я уверен, что mutableDictionary5 получает все значение, так как я поместил следующее в конец кода,

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

Он печатает все значения заголовка.

Я понимаю, что это не должно быть установленным значением, однако я попытался использовать [mutableDictionary5 allValues], "addobjects", "allkeys". Они не работают. Что я должен сделать, чтобы позволить NSMutableArray arData добавить все значения заголовка с "заголовком" в качестве ключа? Благодарю.

Извините за мой плохой английский, который не является моим родным языком.

1 ответ

Решение

Вы ошибочно используете setValue вместо addObject,

[arData addObject:mutableDictionary5]; 

Это будет работать, если вы выделите init новый словарь внутри цикла.
Если вы хотите уменьшить массив до заголовков, сделайте это после цикла:

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

Теперь у вас есть массив, содержащий только заголовки.

Кстати, вы могли бы приложить некоторые усилия, чтобы придумать лучшие имена переменных. Обратите внимание, что по соглашению в Objective-C имена переменных начинаются с маленькой буквы, а имена классов пишутся с большой буквы.

Другие вопросы по тегам