核心数据模型设置

时间:2012-10-28 12:04:19

标签: core-data

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

情景:

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

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

思想?

我有一个Table-view并使用NSFetchedResultsController来填充我的表视图中的od od费用和收入。

1 个答案:

答案 0 :(得分: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;
}

然后您可以在NSFetchedResultsController中使用此fetchRequest 类似于我在你的另一个问题中的答案: CoreData and TableViews

然后你需要做的就是为你想要的时间段创建start-和endDate的NSDate对象,并将它们传递给这个方法。