Привет, ребята (и девочки), в настоящее время я работаю над относительно простым приложением для iPhone, которое извлекает записи из базы данных.
Я пытаюсь использовать NSXMLParser для этого, но по какой-то причине,после достижения 10-го элемента все приложение просто решает подняться и выйти.Я не совсем уверен, почему это происходит.Журнал не выдает никаких ошибок.Он просто останавливается.
Я включил полученные нами didStartElement и didEndElements.
didStartelement
- (void)parser:(NSXMLParser *)parser didStartElement:(NSMutableString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
//NSLog(@"elementName = %@", elementName);
txt = [[NSMutableArray alloc] init];
//curElem = elementName;
//currentRestaurant = [[Restaurant alloc] init];
if ( [elementName isEqualToString:@"Name"]){
curElem = elementName;
currentRestaurant = [[Restaurant alloc] init];
return;
}
else {
curElem = nil;
}
и didEndElement
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
//if( [elementName isEqualToString:@"Name"] ) {
// Do something here
//NSLog(@"TXT: %@", txt);
if([elementName isEqualToString:@"RestID"]){
currentRestaurant.RestID = [txt integerValue];
NSLog(@"RestID: %@", currentRestaurant.RestID);
}
if ([elementName isEqualToString:@"Name"]) {
currentRestaurant.Name = txt;
NSLog(@"Name: %@", currentRestaurant.Name);
}
else if([elementName isEqualToString:@"Address"]){
currentRestaurant.Address = txt;
NSLog(@"Address: %@", currentRestaurant.Address);
}
else if([elementName isEqualToString:@"Phone"]){
currentRestaurant.Phone = txt;
NSLog(@"Phone: %@", currentRestaurant.Phone);
}
else if([elementName isEqualToString:@"NumNoms"]){
currentRestaurant.NumNoms = [txt integerValue];
NSLog(@"NumNoms: %@", currentRestaurant.NumNoms);
}
else if([elementName isEqualToString:@"PriceID"]){
currentRestaurant.PriceID = [txt integerValue];
NSLog(@"PriceID: %@", [NSString stringWithFormat:@"%d", currentRestaurant.PriceID]);
}
else if([elementName isEqualToString:@"OpenTime"]){
currentRestaurant.OpenTime = txt;
NSLog(@"OpenTime: %@", currentRestaurant.OpenTime);
}
else if([elementName isEqualToString:@"CloseTime"]){
currentRestaurant.CloseTime = txt;
NSLog(@"CloseTime: %@", currentRestaurant.CloseTime);
}
else if([elementName isEqualToString:@"TypeID"]){
currentRestaurant.OpenTime = txt;
NSLog(@"TypeID: %@", currentRestaurant.TypeID);
}
else if([elementName isEqualToString:@"imgURL"]){
currentRestaurant.imgURL = txt;
NSLog(@"imgURL: %@", currentRestaurant.imgURL);
}
else if([elementName isEqualToString:@"Coupons"]){
//currentRestaurant.Coupons = txt;
//NSLog(@"Coupons: %@", currentRestaurant.Coupons);
}
else if([elementName isEqualToString:@"Specials"]){
currentRestaurant.Specials = [NSString stringWithFormat:@"%d", [txt integerValue]];
NSLog(@"Specials: %@", currentRestaurant.Specials);
}
else if([elementName isEqualToString:@"Flagged"]){
currentRestaurant.Flagged = [NSString stringWithFormat:@"%d", [txt integerValue]];
NSLog(@"Flagged: %@", currentRestaurant.Flagged);
}
else if([elementName isEqualToString:@"timesFlagged"]){
currentRestaurant.timesFlagged = [txt integerValue];
NSLog(@"timesFlagged: %@", currentRestaurant.timesFlagged);
}
else if([elementName isEqualToString:@"Delivery"]){
currentRestaurant.Delivery = [NSString stringWithFormat:@"%d", [txt integerValue]];
NSLog(@"Delivery: %@", currentRestaurant.Delivery);
}
else if([elementName isEqualToString:@"TigerBucks"]){
currentRestaurant.TigerBucks = [NSString stringWithFormat:@"%d", [txt integerValue]];
NSLog(@"TigerBucks: %@", currentRestaurant.TigerBucks);
[xmlData addObject:currentRestaurant];
[currentRestaurant dealloc];
}
//NSLog(@"Current Rest name: %@", currentRestaurant.Name);
//[xmlData addObject:currentRestaurant];
for (id obj in xmlData)
NSLog(@"A record in xmlData: %@", obj);
[objArray addObject:txt];
//NSLog(@"objArray: %@", [objArray count]);
//NSLog(@"xmlData: %@", [xmlData count]);
[txt release];
return;
//}
[txt release];
txt = nil;
//NSLog(@"objArray: %@", [objArray count]);
//NSLog(@"xmlData: %@", [xmlData count]);
}
Опять же, любой совет будет очень признателен.