Проблемы с заполнением UITableView данными из файла XML - PullRequest
0 голосов
/ 01 февраля 2010

Я постараюсь кратко объяснить, в чем моя проблема ...

Я загружаю файл XML (используя touchXML), чтобы заполнить UITableView данными.

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);
    }
}

В конце цикла for вы видите, что некоторые данные только что переданы, и они нормально работают в NSLog, возвращающем проанализированные данные XML.

Но когда я пытаюсь получить доступ к массиву в

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

вот так ...

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

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

Я получил ошибку! И я не понимаю почему. У меня в разборе XML-данных есть немецкий umlauts , но я определил кодировку UTF-8, так что это не должно быть проблемой. Но если это так, пожалуйста, сообщите мне исправление. Или что еще может быть проблемой ...

Ответы [ 2 ]

0 голосов
/ 07 февраля 2010

Я только что использовал NSXMLParser сейчас и все отлично работает, даже с умлаутами.

Поскольку размер файла XML в любом случае будет небольшим, производительность, в отличие от библиотеки touchXML, не должна иметь большого значения.

Спасибо людям, которые пытались помочь.

0 голосов
/ 01 февраля 2010

Я думаю, вы изменяете значение переменной Exposition *e в методе cellForRowAtIndexPath.Объявите эту переменную в файле .h.

...