الحصول على شجرة قاموس بلدي من فئة xmlparser الخاصة بي .. إلى My DrillDownTableAbdelegate

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

سؤال

يبدو لي أن لديك مشكلة مبتدئ ولكن هنا. كيف أحصل على القاموس الخاص بي من فئة محلل بلدي، والتي لديها شجرة بناء على طاولة لأسفل للحفر مرة أخرى إلى فئة DrillDownTableDelegate. تطبيقي يبدو مثل هذا.

@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 (أنا لائق XMLFile)
  3. مثال الحفر القابل للحلاقة

الخلاصة: كيف يمكنني الحصول على شجرة بلدي (بناء عن طريق المحلل) التي تم بناءها بواسطة محلل بلدي إلى draydowntableAbdelegate؟

ملاحظة. إذا لم ينجح ذلك، فهل يمكنني إنشاء محللي أيضا في ملف مفوضي (أعرف قذرة، لكنني أفترض أن الشجرة المملوءة ستعمل هناك)

هل كانت مفيدة؟

المحلول

هبت مشكلتي. قمت بحل مشكلتي من خلال إنشاء كائنات القاموس في ملف DrayDownAppdelegate الخاص بي ثم استخدامها عبر Singleton UiaPplication في ملف محلل My Parser.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top