Только последнее значение 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 имена переменных начинаются с маленькой буквы, а имена классов пишутся с большой буквы.