5 Stimmen

NSDictionary innerhalb eines NSDictionary

Im Moment habe ich den folgenden Code, um Daten aus einer Xml-Datei zu erhalten. Das funktioniert bis jetzt

- (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);
    }
}

Dieses Wörterbuch wird in ein Array geladen. Das Problem ist, dass, wo dieses Array geladen wurde in müssen den richtigen Eintrag in das Array zu finden. Ich mache es wie folgt

 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;

Aber da Arrays mit Index arbeitet, kann ich keinen Weg finden, um den richtigen Eintrag zu erhalten. Zur Verdeutlichung: Ein Benutzer klickt in einer Kartenansicht auf eine Anmerkung. Diese Annotation erhält dann die entsprechende Detailansicht. Die Detailansicht kann anhand des view.annotation.title überprüfen, welche Anmerkung angeklickt wurde;

Ich brauche also ein Wörterbuch in einem Wörterbuch mit Name als Schlüssel im Root-Wörterbuch. Ist dies möglich? und auf welche Weise kann ich dies implementieren?

Ist das ein wenig klar? Sonst einfach fragen!

Danke Jungs

4voto

Nick Moore Punkte 14978

Ja, das ist eine gute Idee. Übergeben Sie einfach das 'innere' Wörterbuch als Objektparameter an setObject:forKey: auf das 'äußere' Wörterbuch. Es wird einfach funktionieren. Zum Beispiel:

NSMutableDictionary *outer=[[NSMutableDictionary alloc] init];
NSDictionary *inner=[NSDictionary dictionaryWithObject:@"hello" forKey:@"world"];
[outer setObject:inner forKey:@"greetings"];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X