Frage

Ich habe eine XML analysiert und gespeichert, um die analysierten Daten auf Strings, die sind geistiges Eigentum erklärt, beibehalten und synthetisiert, die Werte werden immer in diese Zeichenfolgen während der Analyse, aber nach dem Parser Finish Parsing für ungültig erklärt werden. Ich bin nicht in der Lage, sie aus einer anderen IBAction Methode zuzugreifen, wobei i EXEC BAD ACCESS Fehler erhalten, die, aus meinen Erfahrungen, denkt, dass entsteht, wenn der Debugger einen für ungültig erklären Speicher zuzugreift.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{            
//NSLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if ([elementName isEqualToString:@"resp"]) {
    // clear out our story item caches...
}
else if ([currentElement isEqualToString:@"org"]) {
    name = [attributeDict objectForKey:@"fileid"];
    extention = [attributeDict objectForKey:@"extension"];
    NSLog(@"image named %@ of type %@",name,extention);
}
else if ([currentElement isEqualToString:@"photo"]) {
    photoid = [attributeDict objectForKey:@"photoid"];
    NSLog (@"photo id = %@",photoid);
}       

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    //NSLog(@"found characters: %@", string);
    // save the characters for the current item...
    if ([currentElement isEqualToString:@"userid"]) {
        userid =[NSString stringWithString:string];
        NSLog (@"user id = %@",userid);
        } 
    else if ([currentElement isEqualToString:@"albumid"]) {
        albumid =[NSString stringWithString:string];
        NSLog (@"album id = %@",albumid);
    }
}

Dieser Teil funktioniert gut, aber

- (IBAction)download {
    NSString *urlstr = [NSString stringWithFormat:@"http://staging-data.mysite.com/%@/albumphoto/%@/%@/%@.%@",userid,albumid,photoid,name,extention];
    NSLog(urlstr);
    NSURL *url= [NSURL URLWithString:urlstr];
    NSData *imgdata = [[NSData alloc]initWithContentsOfURL:url];
    UIImage *img = [UIImage imageWithData:imgdata];
    newImage.image=img;
    [imgdata release];

}

Dies führt zu Fehler. pls help

War es hilfreich?

Lösung

Ich schlage vor, Sie schauen genau auf dieser Linie:

name = [attributeDict objectForKey:@"fileid"];

Welche ein Attribut zu einem NSString durch den XML-Parser ohne das Kopieren sie im Besitz setzt, hält sie usw. Ich schlage vor, Sie eine Kopie nehmen, und das beibehalten.

Meine Sorge ist, dass, wenn der XML-Parser weggeht, den name String mit ihm nimmt, zusammen mit extension und photoid.

Andere Tipps

Sie haben diese Methode implementieren auch zu wissen, wann ein End-Tag angetroffen wird.

  • (void) Parser: (NSXMLParser *) Parser didEndElement: (NSString *) element namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) QNAME
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top