1
关于NSArrays和NDictionarys的快速提问。NSArray内的NSDictionary
我有和NSArray包含NSDictionarys。 NSDictionary包含一个日期和一个字符串。
我想要做的就是结束一个NSDictionary,其中包含日期和字符串的键数组。
什么是做到这一点
关于NSArrays和NDictionarys的快速提问。NSArray内的NSDictionary
我有和NSArray包含NSDictionarys。 NSDictionary包含一个日期和一个字符串。
我想要做的就是结束一个NSDictionary,其中包含日期和字符串的键数组。
什么是做到这一点
NSMutableDictionary *result = [NSMutableDictionary dictionary];
for (NSDictionary *dict in array) {
NSDate *date = [dict objectForKey:@"dateKey"];
NSString *string = [dict objectForKey:@"stringKey"];
NSMutableArray *stringsWithDate = [result objectForKey:date];
if (!stringsWithDate) {
stringsWithDate = [NSMutableArray array];
[result setObject:stringsWithDate forKey:date];
}
[stringsWithDate addObject:string];
}
注意NSDate
不是“日历日期”,所以用不同的时间在同一天将被视为在结果字典中的不同日期。
由于我没有看到这样做的合理动机的最好方式,我们称之为代码高尔夫球。
NSMutableArray *dates = [NSMutableArray array];
NSMutableArray *strings = [NSMutableArray array];
for (NSDictionary *dict in dictArray) {
[dates addObject:[dict objectForKey:@"date"]];
[strings addObject:[dict objectForKey:@"string"]];
}
NSArray *datesArray = [[NSArray alloc] initWithArray:dates];
NSArray *stringsArray = [[NSArray alloc] initWithArray:strings];
我已经确定所有的NSDate在00:00使用这个NSCalendar * cal = [NSCalendar currentCalendar]; [cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDateComponents * comp = [cal组件:(NSMonthCalendarUnit | NSYearCalendarUnit | NSDayCalendarUnit)fromDate:tempDate]; NSDate * dateToAdd = [cal dateFromComponents:comp]; – user913059
should [result setObject:stringsWithDate forKey:date]; 在if语句之后,在完成之后完成,THANKKKS! – user913059
实际上,它应该在if语句内使用'[set setObject:...]'。 – omz