Core data 建立核心数据模型

Core data 建立核心数据模型,core-data,Core Data,我有一个使用核心数据模型的费用跟踪iOS应用程序: 情景: ->名为“Money”的抽象父实体,具有“vendor”、“date”、“amount”等属性。两个子实体“费用”和“收入”继承自母实体“金钱”。还有其他实体,如“类别”和“子类别”及其属性。截至目前的总数:我的数据模型中有5个实体(货币、费用、收入、类别和子类别) 问题:我想实现的是每天、每周、每两周、每月和每年跟踪费用。我想让一个实体用12个属性(一月-十二月->月名)来表示“月”,但这不是太复杂了吗 想法 我有一个表视图,并使用N

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

情景:

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

问题:我想实现的是每天、每周、每两周、每月和每年跟踪费用。我想让一个实体用12个属性(一月-十二月->月名)来表示“月”,但这不是太复杂了吗

想法


我有一个表视图,并使用NSFetchedResultsController将od费用和收入的组合填入我的表视图。

您必须创建一个
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;
}
-(NSFetchRequest*)filteredFetchRequestForEntity:(NSString*)entityName startDate:(NSDate*)startDate endDate:(NSDate*)endDate
{

NSPredicate*谓词=[NSPredicate predicateWithFormat:@”(日期>=%@)和(日期)您是在谈论筛选tableView还是要计算平均费用(每日、每周等)我只是想正确地建立我的核心数据模型,到目前为止,它与我上面提到的一切都能正常工作。但我确实想每天、每周、每两周计算费用,然后用核心图显示它的图表。所以,我想知道我该如何按照日期或月份进行排序?以确保我们在这里处于同一页:那么你已经收集了一些数据,并且现在要处理这些数据以接收如下内容:每天费用:$43;每周费用:$301;…对吗?是的,你知道了。就像我将一些费用数据保存为$43一样。我的“钱”(父实体)中只有一个“日期”属性。我将如何对一天、一周、两周的费用进行排序?我是否必须创建另一个实体(如月)并在其中包含12个月的名称属性?我在这里感到困惑。因此,基本上,您希望将给定时间段内的所有费用相加,然后除以该时间段内的天数、周数、月数等?哦,好吧!所以,我不知道您不必真正打乱核心数据模型?使用适当的谓词获取请求将产生所需的结果?确切地说,因为您已经有了支出发生的日期,所以只需对其进行适当的筛选。但是,如果您想在表视图的不同部分显示多个时间段,则需要更多复杂。听起来不错。你知道如何为开始日期和结束日期创建NSDate对象吗?假设,我计划计算一周的费用(开始日期10月1日)结束日期(10月7日)?实际上,我在我的应用程序中使用了一个自定义日历,它具有“开始日期”和“结束日期”属性,因此我可以使用它来创建对象,对吗?正确。如果您的日历将所选日期作为NSDate对象发送,您就可以使用它了。如果它发送字符串,您必须将其转换为NSDate对象。有关这方面的详细信息,请查看。谢谢非常感谢你抽出宝贵的时间来帮助我。你能告诉我在不久的将来我该如何与你联系吗?因为我知道我会在这个申请中遇到麻烦。