NSDictionary в пределах NSDictionary - PullRequest
5 голосов
/ 23 марта 2011

На данный момент у меня есть следующий код для получения данных из XML-файла. Пока это работает

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    attributes:(NSDictionary *)attributeDict{ 
    currentElement = [elementName copy];
    if ([elementName isEqualToString:@"Placemark"]) {
        placemarkData = [[NSMutableDictionary alloc] init];
        currentTitle = [[NSMutableString alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if ([currentElement isEqualToString:@"name"])
        [placemarkData addObject:string forKey:currentElement];
    if ([currentElement isEqualToString:@"address"])
        [placemarkData addObject:string forKey:currentElement];
    if ([currentElement isEqualToString:@"coordinates"])
        [placemarkData addObject:string forKey:currentElement];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI
 qualifiedName:(NSString *)qName{ 
    if ([elementName isEqualToString:@"Placemark"]) {
        [Placemarks addObject:[placemarkData copy]];
        NSString *batsen = [placemarkData objectForKey:@"name"];
        NSLog(@"adding story: %@", batsen);
    }
}

Этот словарь будет загружен в массив. Проблема в том, что для загрузки этого массива необходимо найти правильную запись в массиве. Я делаю это так

 TabbedCalculationAppDelegate *appDelegate = (TabbedCalculationAppDelegate *)[[UIApplication sharedApplication] delegate];

    NSArray *jean = appDelegate.Placemarks;
    NSDictionary *boekje = [jean objectAtIndex:1];
    NSString *coordinaten = [boekje objectForKey:@"coordinates"];
    NSString *naam = [boekje objectForKey:@"name"];
    NSLog(@"poep: %@" , naam);
    NSLog(@"wwhoppa: %@", coordinaten);
    titel.text = coordinaten;

Но так как массивы работают с индексом, я не могу найти способ получить правильную запись. Чтобы уточнить, пользователь нажимает в представлении карты на аннотации. Эта аннотация затем получает соответствующий подробный вид. В подробном представлении можно проверить, какая аннотация нажата view.annotation.title;

Так что мне действительно нужен словарь в словаре с именем в качестве ключа в корневом словаре. Это возможно? и каким образом я могу это реализовать?

Это немного понятно? Остальное просто спроси!

Спасибо, ребята

1 Ответ

4 голосов
/ 23 марта 2011

Да, это хорошая идея.Просто передайте «внутренний» словарь в качестве параметра объекта в setObject:forKey: во «внешнем» словаре.Это просто сработает.Например:

NSMutableDictionary *outer=[[NSMutableDictionary alloc] init];
NSDictionary *inner=[NSDictionary dictionaryWithObject:@"hello" forKey:@"world"];
[outer setObject:inner forKey:@"greetings"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...