Domanda

cercherò di spiegare brevemente che cosa il mio problema è ...

Sto caricando un file XML (utilizzando TouchXML) per compilare un UITableView con i dati.

expositions = [[NSMutableArray alloc] init];

// Get XML string from XML document.
NSString *xmlURL = EXPOSITION_XML_DOC;
NSString *xmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:xmlURL]];
NSString *xmlStringUTF8 = [NSString stringWithUTF8String:[xmlString UTF8String]];
CXMLDocument *xmlDoc = [[CXMLDocument alloc] initWithXMLString:xmlStringUTF8 options:0 error:nil];

// Parse XML document.
NSArray *expos = [xmlDoc  nodesForXPath:@"/expositions/exposition" error:nil];

if (expos != nil && [expos count] >= 1)
{
    // create Exposition instances with data from xml file
    for (CXMLElement *expo in expos)
    {
        NSString *date = [[[[expo attributeForName:@"date"] stringValue] copy] autorelease];
        NSString *name = [[[[expo attributeForName:@"name"] stringValue] copy] autorelease];
        NSString *place = [[[[expo attributeForName:@"place"] stringValue] copy] autorelease];
        NSLog(@"hello , %@, %@, %@", date, name, place);

        Exposition *e = [[Exposition alloc] initWithDate:date name:name place:place];
        [expositions addObject:e];
        NSLog(@"%@", e.name);
    }
}

Al termine del ciclo for, si può vedere che in uscita alcuni dei dati appena passato e funziona benissimo in NSLog restituzione dei dati XML analizzata.

Ma quando provo ad accedere alla matrice in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

in questo modo ...

// get exposition data for this row
    Exposition *e = [expositions objectAtIndex:indexPath.row];

    NSString *str = e.name;
    NSLog(@"%@", str);

ottengo un errore! E io non capisco perché. Ho un po 'tedesco dieresi nei dati XML analizzati ma ho definito la codifica UTF-8 in modo tale Non dovrebbe essere un problema. Ma se lo è, mi dica una correzione. O qualsiasi altra cosa potrebbe essere il problema ...

È stato utile?

Soluzione 2

Ho appena utilizzato NSXMLParser ora e tutto funziona bene, anche con dieresi.

Dal momento che il file XML sta per essere di dimensioni ridotte in ogni caso, le prestazioni in contrasto con la libreria TouchXML non dovrebbe importare più di tanto.

Thx alle persone che ha cercato di aiutare.

Altri suggerimenti

Penso che si sta redeclaring variabile theExposition *e nel metodo cellForRowAtIndexPath. Dichiarare la variabile nel file h.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top