Problemi che popolano UITableView con i dati da file XML
-
24-09-2019 - |
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 ...
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.