我想解析一個XML文件,我通過URL獲得,然後我解析XML的每個元素,並將其添加到NSMutableDictionary中,調用objets一切順利,但是當我嘗試將myMutableDictionnary添加到myMutableArray時,使用什麼也沒有發生......將NSMutableDictionary添加到NSMutableArray
[myMutableArray計數]返回0 & [myMutableDictionary計數]返回3 //這是正確的
此處,我聲明我的變量接口:
@protocol XMLParserDelegate;//déclaration du delegate
@interface XMLParser : NSObject <NSXMLParserDelegate>// on adopte le délégate NSXMLParserDelegate pour la classe
{
NSXMLParser *monParseur;
NSMutableArray *myMutablArray;
NSMutableDictionary *myMutableDictionary;
NSString *objetCourrant;
NSMutableString *journalCourrant;
NSMutableString *dateCourrant;
NSMutableString *descriptionCourrant;
id<XMLParserDelegate> delegate; //on déclare le délégate sous le nom de delegate
}
-(void)parseXMLByPath:(NSString*)chemin;
@property (nonatomic,retain) NSMutableArray *maTabledeJournals;
@property (nonatomic,retain) id<XMLParserDelegate> delegate;
@end
@protocol XMLParserDelegate <NSObject>
-(void) parsingIsFinished;
@end
這裏是我定義我的語法分析器的地方:
-(void)parserDidStartDocument:(NSXMLParser *)parser
{
myMutableArray=[[NSMutableArray alloc] init];
NSLog(@"Started");
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if (objetCourrant) {
objetCourrant=nil;
}
objetCourrant=[elementName copy];
if([elementName isEqualToString:kJournal ])
{
if(myMutableDictionary)
{
myMutableDictionary=nil;
}
if(journalCourrant)
{
journalCourrant=nil;
}
if(dateCourrant)
{
dateCourrant=nil;
}
if(descriptionCourrant)
{
descriptionCourrant=nil;
}
myMutableDictionary = [[NSMutableDictionary alloc] init];
journalCourrant = [[NSMutableString alloc] init];
dateCourrant = [[NSMutableString alloc] init];
descriptionCourrant = [[NSMutableString alloc] init];
NSLog(@"is parsing...");
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:kJournal])
{
[myMutableDictionary setObject:journalCourrant forKey:kTitre]; NSLog(@"%@",journalCourrant);
[myMutableDictionary setObject:dateCourrant forKey:kDate]; NSLog(@"%@",dateCourrant);
[myMutableDictionary setObject:descriptionCourrant forKey:kDescription]; NSLog(@"%@",descriptionCourrant);
NSLog(@"my dictionary %i",[myMutableDictionary count]);
[myMutableArray addObject:myMutableDictionary];
NSLog(@"my array %i",[myMutableArray count]);
}
}
任何想法可能會造成麻煩嗎?
解決方案,而不是添加到myMutableDictionary像myMutableArray如下:
[myMutableArray addObject:myMutableDictionary];
我所做的:
[self.myMutableArray addObject:myMutableDictionary];
和現在的一切工作正常。 謝謝你們的幫助!
你不表明inits陣列的任何代碼。它存在嗎?嘗試記錄'myMutableArray'來驗證它不是零。 – 2012-04-24 13:05:45
是的,它存在! – Hosni 2012-04-24 13:08:22
你是什麼意思通過嘗試日誌記錄? – Hosni 2012-04-24 13:12:22