【问题标题】:NSDictionary within a NSDictionaryNSDictionary 中的 NSDictionary
【发布时间】:2011-07-21 09:20:31
【问题描述】:

目前我有以下代码可以从 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;

但由于数组与索引一起使用,我无法找到获得正确条目的方法。为了澄清,用户在地图视图中单击注释。然后这个注解得到对应的detailview。 detailview可以检查view.annotation.title点击了哪个注解;

所以我实际上需要一个字典中的字典,其名称作为根字典中的键。这可能吗?我可以通过什么方式实现它?

这有点清楚了吗?否则就问吧!

谢谢大家

【问题讨论】:

    标签: iphone ios dictionary


    【解决方案1】:

    是的,这是个好主意。只需将“内部”字典作为对象参数传递给“外部”字典上的setObject:forKey:。它会起作用的。例如:

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

    【讨论】:

    • 好的,谢谢!我做了以下事情:[Placemarks setObject:placemarkData forKey:@"naam"]; Placemarks 和 PlacemarkData 都是字典。但这会使应用程序挂起。有什么想法吗?
    • 是的,我做到了。但我只是看到了问题所在。我已经将它放在一个迭代中,这使得该代码与每个 xml 条目一起循环。解决了这个问题!谢谢大佬!!
    • 应该可以,我认为问题又出在代码的其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多