创建NSDictionary有问题吗?

时间:2016-01-31 00:00:46

标签: objective-c json nested nsarray nsdictionary

我正在使用谷歌的API创建一个链接谷歌日历的日历。我发现了一个可以用于Github的精彩日历。我现在将从Google API收到的JSON数据转换为适合GitHub日历视图的格式。

我需要在NSDictionary内部的NSArray内部存储一个NSObject。

NSObject-一个存储标题,描述,日期等的小型NSObject

NSArray-存储所有NSObject(上面一行)

NSDictionary(First One) - 将NSArray(上面一行)作为对象存储,将原始对象的月份作为键存储

NSDictionary(Second One) - 存储" Months Dictionary" (上面的行)作为对象和原始对象作为键。

目前,它将在" Year Dictionary"中添加正确的年份。但不会正确存储其他数据。

这是我的代码,这个代码将以不同的方法为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;

谢谢,我花了好几个小时盯着,从逻辑上思考这一点,并且不明白我哪里出错了! :|

1 个答案:

答案 0 :(得分:0)

首先,如果您想构建用于存储事件的年月词典,则不希望每次事件发生时都重新创建它们。您需要创建词典(一年和十二个月的词典我假设在事件处理循环之外。您还想创建一个空数组来存储事件然后您希望将每个事件添加到数组中适当的月份和适当的年份。