我是iphone新手。 我正在使用XML解析器接收存儲在NSMutableArray中的數據並將其顯示在TableView中。 當我編譯時,我可以使用NSLog在控制檯中看到數據,但它不會顯示在模擬器的tableView中。我需要你的幫助來解決這個問題。如何在TableView中顯示存儲在NSMutableArray中的數據?
// XMLParser.m
#import "XMLParser.h"
@implementation XMLParser
- (NSDictionary *)catalogue{
return catalogue;
}
- (id)parseXMLAtURL:(NSURL *)url
parseError:(NSError **)error
{
catalogue = [NSMutableDictionary new];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
if([parser parserError] && error) {
*error = [parser parserError];
}
[parser release];
return self;
}
- (void) parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"Catalogue"]) {
categories = [NSMutableArray new];
}else if([elementName isEqualToString:@"Categorie"]) {
categorie = [NSMutableDictionary new];
[categorie setValue:[attributeDict valueForKey:@"id"] forKey:@"id"];
typesProduit = [NSMutableArray new];
}else if([elementName isEqualToString:@"typeproduit"]) {
typeProduit = [NSMutableDictionary new];
[typeProduit setValue:[attributeDict valueForKey:@"id"] forKey:@"id"];
produits = [NSMutableArray new];
}else if([elementName isEqualToString:@"produit"]) {
produit = [NSMutableDictionary new];
[produit setValue:[attributeDict valueForKey:@"id"] forKey:@"id"];
}else {
currentNodeName = [elementName copy];
currentNodeContent = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
//NSLog(@"Close tag: %@", elementName);
if([elementName isEqualToString:@"Catalogue"]) {
[catalogue setValue:categories forKey:@"categories"];
[categories release];
categories = nil;
}else if([elementName isEqualToString:@"Categorie"]) {
[categorie setValue:typesProduit forKey:@"typesProduit"];
[typesProduit release];typesProduit=nil;
[categories addObject:categorie];
[categorie release];categorie = nil;
[typesProduit release];typesProduit=nil;
}else if([elementName isEqualToString:@"typeproduit"]) {
[typeProduit setValue:produits forKey:@"produits"];
[typesProduit addObject:typeProduit];
[typeProduit release];typeProduit=nil;
[produits release];produits=nil;
}else if([elementName isEqualToString:@"produit"]) {
[produits addObject:produit];
[produit release];produit=nil;
}else if([elementName isEqualToString:@"nom"]) {
[categorie setValue:currentNodeContent forKey:@"nom"];
}else if([elementName isEqualToString:@"libelle"]) {
[typeProduit setValue:currentNodeContent forKey:@"libelle"];
}else {
[produit setValue:currentNodeContent forKey:elementName];
[currentNodeContent release];currentNodeContent=nil;
}
}
- (void)parser:(NSXMLParser *)parser
foundCharacters:(NSString *)string
{
[currentNodeContent appendString:string];
}
- (void)dealloc{
[catalogue release];
[super dealloc];
}
@end
你可以顯示代碼在哪裏填充你的表格視圖嗎? –