辞書timeStamps
がすべての値を に変更するという問題がありますnull
。キーだったものを値に、またはその逆に切り替えても、キーはすべて問題ありません。順序に関係なく、値は最終的に次のようにnull
なり、キーは本来のとおりになります。
これがコードです。xml パーサーです。キーのコードの配列と値のタイムスタンプの配列を持つ辞書を構築しています。キーと値は、カテゴリを表す並列配列です。
すべての変数は別の場所で割り当てられ、開始されます。これにより、これらすべての変数をプロパティとして持つヘッダー ファイルがインポートされます。@property (strong, nonatomic) Type variableName;
次に、メインファイルに次の行があります@synthesize variableName
。また、それは持っていvariableName = [[Type alloc] init];
ます。皆さん、助けてくれてありがとう!
- (void) didStartElement (elementname is passed as xml tag)
{
//Tells us if we are in the dance categories
if ([elementName isEqualToString:@"categories"])
{
isCategory = YES; // Just tells us we're ready to start reading
}
else if ([elementName isEqualToString:@"category"] && isCategory)
{
onCategory = YES; //
}
}
- (void) foundCharacters (currentNodeContent is the info between tags)
{
currentNodeContent = (NSMutableString *) string;
}
- (void) didEndElement
{
// if leaving dance categories
if ([elementName isEqualToString:@"Category End"])
{
isCategory = NO; // We've left a category
}
else if ([elementName isEqualToString:@"code"] && onCategory)
{
Code = currentNodeContent;
currentNodeContent = nil;
isWaitingForTime = YES;
}
else if ([elementName isEqualToString:@"time"] && isWaitingForTime)
{
[runningList addObject:Code];
[runningList addObject:currentNodeContent];
isWaitingForTime = NO;
currentNodeContent = nil;
Code = @"";
}
else if ([elementName isEqualToString:@"dances"])
{
[timeStamps setObject:runningTimeList forKey:runningList];
[runningTimeList removeAllObjects];
[runningList removeAllObjects];
}
}