URLで取得したXMLファイルを解析しようとしています。次にXMLの各要素を解析し、それをobjetsというNSMutableDictionaryに追加しますが、何も使用せずにmyMutableDictionnaryをmyMutableArrayに追加しようとすると...
[myMutableArray count]は0を返し、[myMutableDictionarycount]は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];
そして今はすべてうまくいきます。助けてくれてありがとう!