あるView Controllerから別のView Controllerに渡すことができる他の関連情報とともに、解析されたXMLデータを含む1つの「深い」NSMutableDictionaryを構築しました。NSMutableDictionary には主に NSString が含まれていますが、さらに別の NSMutableDictionary にも NSString が含まれており、最終的にカスタム オブジェクトの NSMutableArray がさらに深く続きます (これはカレンダー用です)。
さて、これはカレンダーなので、明らかに日付が関係しています。私が受け取って NSXMLParser を使用して解析した XML データは文字列を返すので、その日の日付を使用可能な数値に変換するのは私の責任でした。XML の日付は、次の形式で提供されます: "MM.DD" そのために、次のメソッドを作成しました。
- (void)createDateCodesWithString:(NSString *)string
{
NSInteger monthCode;
NSInteger dayCode;
....
NSArray *dates = [string componentsSeparatedByString:@"."];
monthCode = [[dates objectAtIndex:0] integerValue];
dayCode = [[dates objectAtIndex:1] integerValue];
....
shortDay = [NSNumber numberWithInt:dayCode];
}
「shortDay」は NSNumber* と ivar であり、作成したカスタム オブジェクトのプロパティ (非アトミック、保持) として設定されます。コンソールで NSLog コマンドを実行すると、「shortDay」およびその他のデータが深い NSMutableDictionary に正常に保存されているように見えます。しかし、データに再度アクセスしようとすると、問題が発生します。NSString* に保存された ivar にアクセスすると問題なく動作しますが、NSNumber* にアクセスしようとすると、コード 1 またはコード 2 で EXC_BAD_ACCESS エラーが発生します。これが、NSNumber* を呼び出そうとする方法です。
NSNumber *number = day.shortDay;
return [number stringValue];
問題は、NSArray *dates が文字列を月と日の文字列に分割し、2 文字の長さの日の文字列の前に「0」が含まれている可能性があるためです。たとえば、日が月の 6 日である場合は「6」です。 ? 何かアドバイス?
必要に応じて、より多くのコードを投稿できれば幸いです。