2009-07-19 3 views
0

У меня, похоже, проблема с новичком, но вот оно. Как получить мой словарь из моего класса парсера, у которого есть дерево для древовидной таблицы назад к моему классу drilldowntabledelegate. мое приложение выглядит примерно так.Получение моего дерева слова из моего класса xmlparser .. в мой файл drilldowntableappdelegate

@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]; 

} 

Мой анализатор файл выглядит примерно так

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

Я получаю вдохновение и информацию со всего интернетом Что работает:

  1. Строит красивое дерево, может быть прочитано моим приложением (протестировано с помощью writetoFile)
  2. xmlparsing works (I приличный xmlfile)
  3. drilldowntable примера

вывод: как я могу получить мой (построить анализатор) Дерево, которое было построить мой парсер моей drilldowntableappdelegate?

пс. если это не сработает, я также могу создать свой парсер в файле делегата (я знаю неряшливый, но я предполагаю, что мое заполненное дерево будет работать там)

ответ

0

Я опрокинул свою проблему. Я решил свою проблему, создав объекты словаря в моем файле drilldownappdelegate, а затем используя их через single-UIApplication в файле парсера.