Ich bekomme meinen Wörterbuchbaum aus meiner XMLparser-Klasse.zu meiner Drilldowntableappdelegate-Datei

StackOverflow https://stackoverflow.com/questions/1150076

Frage

Ich scheine ein Anfängerproblem zu haben, aber hier ist es.Wie bekomme ich mein Wörterbuch von meiner Parser-Klasse, die einen Baum für eine Drilldown-Tabelle erstellt hat, zurück zu meiner Drilldowntabledelegate-Klasse?Meine App sieht ungefähr so ​​aus.

@implementation DrillDownAppAppDelegate

@synthesize window;

@synthesize navigationController;

@synthesize data;

-(void)StartParser
{   
    //NSURL *url = [[NSURL alloc] initWithString:@"http://sites.google.com/site/virtuagymtestxml/testxml/Books.xml"];
    //NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    //local
    NSString *Path = [[NSBundle mainBundle] bundlePath];
    NSString *DataPath = [ Path stringByAppendingPathComponent:@"exercises.xml"];
    NSData *Data = [[NSData alloc] initWithContentsOfFile:DataPath];

    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:Data];
    //Initialize the delegate.
    XMLParser *parser = [[XMLParser alloc] initXMLParser];

    //Set delegate
    [xmlParser setDelegate:parser];

    //Start parsing the XML file.
    BOOL success = [xmlParser parse];

    if(success){
        NSLog(@"No Errors");
    }
    else
    {
        NSLog(@"Error Error Error!!!"); 
    }

}


- (void)applicationDidFinishLaunching:(UIApplication *)application {

        [self startParser];

    NSString *Path = [[NSBundle mainBundle] bundlePath];
    NSString *DataPath = [Path stringByAppendingPathComponent:@"Tree2.plist"];

    NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:DataPath];


         //this is what needs to happen
         **NSDictionary *tempDict = dictionaryFromMyParser**

    self.data = tempDict;
    [tempDict release];

    // Configure and show the window
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];

}

Meine Parser-Datei sieht in etwa so aus

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict {

    if([elementName isEqualToString:@"exercises"]) {

      //init tree 
        Tree = [NSMutableDictionary new];
        Rows = [NSMutableArray new];
        [Tree setObject:Rows forKey:@"Rows"];

        //Initialize the array.
             ... all kinds of arrays here 
    }

if([elementName isEqualToString:@"menu_mob"]) {
        amenuMob = [[menuMob alloc]init];
    }

    if([elementName isEqualToString:@"menuitem"]) {
        amenuItem = [[menuItem alloc] init];
        amenuItem.IDE = [[attributeDict objectForKey:@"id"] integerValue];
        amenuItem.text = [attributeDict objectForKey:@"text"];

        NSLog(@"reading id menuitem %i", amenuItem.IDE);
        NSLog(@"reading text menuitem %@", amenuItem.text);
        [appDelegate.menuitems addObject:amenuItem];
}

Ich habe meine Inspiration und Informationen aus dem ganzen Internet erhalten, was funktioniert:

  1. Erstellen eines schönen Baums, der von meiner App eingelesen werden kann (getestet mit writetoFile)
  2. XMLparsing funktioniert (ich habe eine anständige XML-Datei)
  3. das Drilldowntable-Beispiel

Abschluss:Wie bekomme ich meinen (vom Parser erstellten) Baum, der von meinem Parser erstellt wurde, in meine Drilldowntableappdelegate?

PS.Wenn das nicht funktioniert, kann ich meinen Parser auch in meiner Delegate-Datei erstellen (ich weiß, dass es schlampig ist, aber ich gehe davon aus, dass mein gefüllter Baum dort funktionieren wird).

War es hilfreich?

Lösung

Ich habe mein Problem gelöst.Ich habe mein Problem gelöst, indem ich die Wörterbuchobjekte in meiner Drilldownappdelegate-Datei erstellt und sie dann über die Singleton-UIApplication in meiner Parserdatei verwendet habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top