0

我有一个使用核心数据模型跟踪 iOS 应用程序的费用:

设想:

-> 一个名为“Money”的抽象父实体,具有“vendor”、“date”、“amount”等属性。“费用”和“收入”这两个子实体继承自父实体“金钱”。然后还有其他实体,例如“Category”和“subCategory”及其属性。截至目前的总数:我的数据模型中有 5 个实体(金钱、费用、收入、类别和子类别)。

问题:我想要实现的是每天、每周、每两周、每月和每年跟踪费用。我正在考虑用 12 个属性(一月 - 十二月 - > 月份名称)让一个实体说“月份”,但这不是太复杂吗?

想法?

我有一个表格视图,并使用 NSFetchedResultsController 来填充我的表格视图,其中包含混合 od 费用和收入。

4

1 回答 1

0

您必须为适当的时间段创建一个NSFetchRequest过滤器。NSPredicate假设您想列出两个日期之间的所有费用,您可以实现一个返回NSFetchRequest此期间过滤器的方法:

- (NSFetchRequest *)filteredFetchRequestForEntity:(NSString *)entityName startDate:(NSDate *)startDate endDate:(NSDate *)endDate
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@", startDate, endDate];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];
    [fetchRequest setPredicate:predicate];

    return fetchRequest;
}

然后,您可以使用此 fetchRequest 例如,NSFetchedResultsController 类似于我在您的其他问题中的回答: CoreData 和 TableViews

然后,您所要做的就是在您想要的时间段内为 start- 和 endDate 创建 NSDate 对象,并将它们传递给此方法。

于 2012-10-28T12:40:33.067 回答