我有一个使用核心数据模型的费用跟踪iOS应用程序:
场景:
->名为"Money“的抽象父实体,具有”供应商“、”日期“、”金额“等属性。两个子实体“费用”和“收入”继承自父实体“钱”。然后还有其他实体,如"Category“和"subCategory”,以及它们的属性。到目前为止:我的数据模型中有5个实体(钱、费用、收入、类别和子类别)。
问:我想要实现的是每天,每周,每两周,每月和每年的费用跟踪。我正在考虑让一个实体使用12个属性( Jan - Dec -> month names)来表示“月”,但这不是太复杂了吗?
有什么想法?
我有一个表视图,并使用NSFetchedResultsController将费用和收入的组合填充到我的表视图中。
发布于 2012-10-28 20:40:33
您必须使用NSPredicate创建一个NSFetchRequest,以便根据适当的时间段进行过滤。假设您想要列出两个日期之间的所有费用,您可以实现一个方法,该方法返回一个针对此期间进行过滤的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创建NSDate对象,为您所需的时间段创建endDate对象,并将它们传递给此方法。
https://stackoverflow.com/questions/13108656
复制相似问题