나는 this tutorial을 따라 갔으며 구문 분석 부분은 정상적으로 작동합니다. 내 문제는 개체에 저장하는 값을 출력 할 때 (내 경우 개체가 자동차 인 경우) 항상 null로 유지된다는 것입니다. 모든 객체를 NSMutableArray에 저장합니다. NSMutableArray는 항상 길이/개수 == 0 인 것처럼 보입니다 ... 내가 뭘 잘못하고 있니? 배열은XMLParser 및 NSMutableArray
- (XMLParser *) initXMLParser {
[super init];
appDelegate = (Car2GoAppDelegate *) [[UIApplication sharedApplication]delegate];
currentElementValue = [[NSMutableString alloc]init];
return self;
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attribute:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"kml"]) {
appDelegate.cars = [[NSMutableArray alloc]init];
}
else if([elementName isEqualToString:@"Placemark"]) {
aCar = [[Car alloc]init];
}
else
return;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *) string {
[currentElementValue appendString:string];
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"kml"])
return;
if([elementName isEqualToString:@"Style"])
return;
if([elementName isEqualToString:@"IconStyle"])
return;
if([elementName isEqualToString:@"Icon"])
return;
if([elementName isEqualToString:@"color"])
return;
if([elementName isEqualToString:@"colorMode"])
return;
if([elementName isEqualToString:@"scale"])
return;
if([elementName isEqualToString:@"href"])
return;
if([elementName isEqualToString:@"styleUrl"])
return;
if([elementName isEqualToString:@"a"])
return;
if([elementName isEqualToString:@"Placemark"]) {
[appDelegate.cars addObject:aCar];
[aCar release];
aCar = nil;
}
else if([elementName isEqualToString:@"name"]) {
[aCar setValue:currentElementValue forKey:elementName];
}
else if([elementName isEqualToString:@"description"]) {
[aCar setValue:currentElementValue forKey:elementName];
[currentElementValue setString:@""];
}
else if([elementName isEqualToString:@"coordinates"]) {
[aCar setValue:currentElementValue forKey:elementName];
[currentElementValue setString:@""];
NSLog(@"aCar coordinates:%@", [aCar coordinates]);
}
else
return;
}
- (void) dealloc {
[aCar release];
[currentElementValue release];
[super dealloc];
}
@end
/루프
나는 또한 의심 스럽지만. kml 요소를 얻을 때마다 appDelegate.cars를 날려 버리고 있습니다. 네가하고 싶은지 아닌지 나는 모른다. – amattn