Я анализирую XML-файл для двух элементов: "title" и "noType". После их анализа я добавляю их в объект с именем aMaster, экземпляр моего собственного мастер-класса, который содержит переменные NSString.
Затем я добавляю эти экземпляры в массив NSMutableArray для одиночного вызова, чтобы вызвать их в другом месте программы. Проблема в том, что когда я их вызываю, они, кажется, не находятся в одном и том же индексе NSMutableArray ... каждый индекс содержит либо заголовок, либо элемент noType, когда он должен быть обоим ... может кто-нибудь увидеть, кто я такой делать неправильно? Ниже приведен код для парсера. Большое спасибо !!
#import "XMLParser.h"
#import "Values.h"
#import "Listing.h"
#import "Master.h"
@implementation XMLParser
@synthesize sharedSingleton, aMaster;
- (XMLParser *) initXMLParser {
[super init];
sharedSingleton = [Values sharedValues];
aMaster = [[Master init] alloc];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
aMaster = [[Master alloc] init];
//Extract the attribute here.
if ([elementName isEqualToString:@"intro"]) {
aMaster.intro = [attributeDict objectForKey:@"enabled"];
} else if ([elementName isEqualToString:@"item"]) {
aMaster.item_type = [attributeDict objectForKey:@"type"];
//NSLog(@"Did find item with type %@", [attributeDict objectForKey:@"type"]);
//NSLog(@"Reading id value :%@", aMaster.item_type);
} else {
//NSLog(@"No known elements");
}
//NSLog(@"Processing Element: %@", elementName); //HERE
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else {
[currentElementValue appendString:string];//[tempString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
CFStringTrimWhitespace((CFMutableStringRef)currentElementValue);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"item"]) {
[sharedSingleton.master addObject:aMaster];
NSLog(@"Added %@ and %@ to the shared singleton", aMaster.title, aMaster.noType); //Only having one at a time added... don't know why
[aMaster release];
aMaster = nil;
} else if ([elementName isEqualToString:@"title"]) {
[aMaster setValue:currentElementValue forKey:@"title"];
} else if ([elementName isEqualToString:@"noType"]) {
[aMaster setValue:currentElementValue forKey:@"noType"];
//NSLog(@"%@ should load into the singleton", aMaster.noType);
}
NSLog(@"delimiter");
NSLog(@"%@ should load into the singleton", aMaster.title);
NSLog(@"%@ should load into the singleton", aMaster.noType);
[currentElementValue release];
currentElementValue = nil;
}
- (void) dealloc {
[aMaster release];
[currentElementValue release];
[super dealloc];
}
@end