我有一个NSManagedObject company
,其中包含(NSString*) name
和(NSDate*) lastAvailableInterim
属性。
我想计算公司数组(NSArray *companies
)的汇总值,例如,根据以下代码示例,上一个报告日期等于季度结束:
- (NSDate*)latestAvailableInterimFor:(NSArray*)companies
{ // returns the maximum interim report date for all companies in the selection, date has to have end month = quarter end
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
__block NSDate *maxLatestAvailableInterim;
[self.companies enumerateObjectsUsingBlock:^(IBCompany *company, NSUInteger idx, BOOL *stop) {
NSDateComponents *monthComponents = [gregorian components:NSMonthCalendarUnit fromDate:company.latestAvailableInterim];
NSAssert((company.latestAvailableInterim),@"LatestAvailableInterim must be <> NIL!");
NSInteger month = [monthComponents month];
if ( month % 3 == 0 ) maxLatestAvailableInterim = MAX(maxLatestAvailableInterim, company.latestAvailableInterim);
}];
return maxLatestAvailableInterim;
}
从面向对象的角度并基于 MVC 方案,我会在哪里放置此代码?
在视图控制器中,它处理结果值或“接近”(NSManagedObject*) company
子类,或者将类别添加到NSArray
是否有意义?
谢谢!
答案 0 :(得分:1)
不是NSArray的类别。您可以向接收NSManagedObjectContext的IBCompany类添加一个类方法,并使用它来执行提取以查找您要查找的正确日期。尝试通过NSFetchRequest找到正确的日期,而不是进行内存检查。
您也可以在处理结果信息的视图控制器中执行此操作。