Возникла проблема с созданием NSDictionary?

Я создаю календарь, который связывается с календарем Google с помощью API Google. Я нашел отличный календарь, который можно использовать вне Github. Сейчас я конвертирую данные JSON, которые я получаю из API Google, в формат, подходящий для представления календаря из GitHub.

Мне нужно сохранить NSObject внутри NSArray, внутри NSDictionary, внутри NSDictionary.

NSObject - небольшой NSObject, в котором хранятся заголовок, описание, даты и т. Д.

NSArray - хранит все объекты NSObject (строка выше)

NSDictionary (First One) - сохраняет NSArray (строка выше) как объект и месяц исходного объекта как ключ

NSDictionary (Second One) - хранит «Словарь месяцев» (строка выше) как объект и исходный объект как ключ.

На данный момент он добавит правильный год в «Словарь года», но не будет правильно хранить другие данные.

вот мой код, этот код будет запускаться для каждого события в цикле for другим методом.

ATEvent *event = [ATEvent new];
event.title = eventGiven[@"summary"];
event.summary = eventGiven[@"description"];
[event compileStartDate:eventGiven[@"start"]];
[event compileEndDate:eventGiven[@"end"]];
event.location = eventGiven[@"location"];

NSCalendar *defaultCalendar = [NSCalendar currentCalendar];
NSDateComponents *components = [defaultCalendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date]; // Get necessary date components

NSString *month = [NSString stringWithFormat:@"%li",(long)[components month]];
NSString *year = [NSString stringWithFormat:@"%li",(long)[components year]];

NSMutableDictionary *yearDictionary = [[NSMutableDictionary alloc] initWithDictionary:dataByDate];
NSMutableDictionary *monthDictionary = [[NSMutableDictionary alloc] initWithDictionary:yearDictionary[month]];
NSMutableArray *monthArray = [[NSMutableArray alloc] initWithArray:monthDictionary[month]];

[yearDictionary setObject:monthDictionary forKey:year];
[monthDictionary setObject:monthArray forKey:month];
[monthArray addObject:event];

NSLog(@"%@",yearDictionary);

dataByDate = yearDictionary;

Спасибо, я часами смотрел, размышляя обо всем этом логически, и не понимаю, в чем я ошибаюсь! : |


person Elijah Cobb    schedule 31.01.2016    source источник


Ответы (1)


Во-первых, если вы хотите создать свои годовые и месячные словари для хранения событий, вы не хотите создавать их заново каждый раз, когда происходит событие. Вам необходимо создать словари (годовые и двенадцатимесячные словари, как я полагаю) вне цикла обработки событий. Вы также хотите создать пустой массив для хранения событий. Затем вы хотите добавить каждое событие в массив для соответствующего месяца и соответствующего года.

person john elemans    schedule 31.01.2016