【发布时间】:2014-01-16 04:40:00
【问题描述】:
我有一个具有时间和计数属性的 Stat 对象。我有一个(按时间排序)每小时来的这些对象的列表。我想集群显示。 在目标 c 中是否有一种按时间对数据进行聚类的好方法?还是比下面的幼稚算法更好的算法?
这是一个每周做一次的例子。其他类似,但您更改了日期组件。
-(void) makeWeeklyData{
Stat *prev = self.hourlyData[0];
NSInteger sum = 0;
NSMutableArray *weeklyData = [NSMutableArray array];
for (CSInstallStat *data in self.hourlyData) {
NSDateComponents *itemComps = [[NSCalendar currentCalendar] components:kCFCalendarUnitWeekOfYear | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:data.time];
[itemComps setCalendar:[NSCalendar currentCalendar]];
NSDateComponents *currComps = [[NSCalendar currentCalendar] components:kCFCalendarUnitWeekOfYear | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:prev.time];
[currComps setCalendar:[NSCalendar currentCalendar]];
if ([itemComps weekOfYear] == [currComps weekOfYear] && [itemComps month] == [currComps month] && [itemComps year] == [currComps year]) {//Same Week
sum += data.count;
} else if([itemComps weekOfYear] >= [currComps weekOfYear] && [itemComps month] == [currComps month] && [itemComps year] == [currComps year]) { //Next Week
Stat *stat = [[CSInstallStat alloc] init];
stat.time = [currComps date];
stat.count = sum;
stat.timeAccuracy = ENUMWeekly;
[weeklyData addObject:stat];
sum = 0;
sum += data.count;
prev = data;
} else {
prev = data;
}
}
self.weeklyData = weeklyData;
}
【问题讨论】:
-
我的MBCalendarKit 库包含一些您可能会觉得有用的 NSCalendar 和 NSDate 类别。
标签: objective-c nsdate nsdatecomponents