使用XML文件中的数据填充UITableView的问题

时间:2010-02-01 12:53:13

标签: iphone xml uitableview diacritics

我会尽快解释我的问题是什么......

我正在加载一个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 :(得分:0)

我认为您正在重新声明Exposition *e方法中的cellForRowAtIndexPath变量。在.h文件中声明该变量。

答案 1 :(得分:0)

我现在只使用NSXMLParser,一切正常,即使使用变音符号也是如此。

由于XML文件的文件大小无论如何,与touchXML库相比,性能应该不会那么重要。

向那些试图帮助的人们致谢。