2011-01-13 6 views
2

Ich habe eine XML-Datei, die ich analysiere.NSXMLParser Problem

NSURL *url = [NSURL URLWithString:@"url.xml"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
self.downloadData = [[NSMutableData alloc] initWithLength:0]; 
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 

Ich habe alle Verbindungen arbeiten, und ich dachte, dass ich das Parsen hatte gearbeitet, aber ich habe Probleme und weiß nicht, was ich falsch mache.

mein didStartElement:

-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict { 
    if ([elementName isEqualToString:kimgurl]) 
    { 
     elementFound = YES; 
    } 
} 

foundCharacter:

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string { 
if (elementFound == YES) { 
     if(!currentValue) 
     { 
      currentValue = [[NSMutableString alloc] init]; 
     } 

     [currentValue appendString: string]; 
    } 
} 

dann didEndElement:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if (elementFound) { 
     if ([elementName isEqualToString:kimgurl]) { 
      NSLog(@"imgurl: %@", currentValue); 
      imageItems.imageURL = currentValue; 
      NSLog(@"elname: %@", elementName); 
      NSLog(@"img: %@", kimgurl); 
      [currentValue setString:@""]; 
      NSLog(@"imageitem: %@", imageItems.imageURL); 
     } 
    } 
} 

Ich habe die NSLogs dort, weil imageItems.imageURL null ist. Dies ist eine Klassendatei, die so ist.

ImageItems.h

@interface ImageItems : NSObject { 
    //parsed data 
    NSString *imageURL; 
} 

@property (nonatomic, retain) NSString *imageURL; 

@end 

ImageItems.m

#import "ImageItems.h" 

@implementation ImageItems  
@synthesize imageURL; 

-(void)dealloc 
{ 
    [imageURL release]; 
    [super dealloc]; 
} 

@end 

Wie Sie meinen Code kann sagen, ich bin neu in Objective-c.

currentValue hat den Wert, den ich suche. Warum ist imageItems null? Was vermisse ich?

Antwort

0

Ich sehe die Zuordnung von "imageItems" nirgends in Ihrem Code. Sie müssen es wahrscheinlich irgendwann einer Instanz von ImageItems zuweisen. Vielleicht mit self.imageItems = [[[ImageItems alloc] init] autorelease] oder imageItems = [[ImageItems alloc] init];?

+0

Ich mache das und ich bekomme EXC_BAD_ACCESS. Könnte etwas mit dem Aufruf von ImageItems als @klasse zu tun haben? – user574947

+0

Versuchen Sie, diesen Code zu posten? Wo ist die EXC_BAD_ACCESS? Versuchen Sie, NSZombies - http://www.markj.net/iphone-memory-debug-nszombie/ zu verwenden, um die Ursache des Problems zu finden. –

+0

vielleicht mache ich das alles falsch. Haben Sie ein Beispiel dafür, wie Sie die Daten erfassen, die Sie beim Parsen der XML-Datei benötigen? Erstellen Sie eine Klasse zum Speichern der Daten? Wenn jemand einige Beispiele hat, wäre das großartig. – user574947

Verwandte Themen