0

我有一个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

谢谢!

4

1 回答 1

1

不是 NSArray 的类别。您可以向您的 IBCompany 类添加一个类方法,该类接收 NSManagedObjectContext 并使用它来执行获取以找到您正在寻找的正确日期。尝试通过 NSFetchRequest 找到正确的日期,而不是进行内存检查。

您也可以在处理结果信息的视图控制器中执行此操作。

于 2012-10-24T14:47:48.950 回答