我使用核心数据模型跟踪iOS应用程序的费用:
情景:
- >名为“Money”的抽象父实体,其属性为“vendor”,“date”,“amount”等。两个子实体“费用”和“收入”继承自父实体“货币”。然后还有其他实体,例如“Category”和“subCategory”及其属性。截至目前的总数:我的数据模型中有5个实体(金钱,费用,收入,类别和子类别)。
问题:我想要实现的是每天,每周,每两周,每月和每年跟踪费用。我想让一个实体说“月份”有12个属性(1月 - 12月 - >月份名称),但是不是太复杂了吗?
思想?
我有一个Table-view并使用NSFetchedResultsController来填充我的表视图中的od od费用和收入。
答案 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对象,并将它们传递给这个方法。