【问题标题】:Change tableView when changing CoreData attribute criteria更改 CoreData 属性条件时更改 tableView
【发布时间】:2011-02-17 12:37:37
【问题描述】:

由于我是 iOS 新手,因此正在寻找有经验的建议。 我有“收入”和“费用”的 CoreData 实体。我有一个 tableView 来显示费用和另一个来显示收入。我想按月对费用或收入进行分组,并在 tableView 上显示数据(费用或收入),并使用工具栏按钮更改显示的月份。按月显示似乎很简单,在实体上使用属性“月”。我的问题是实现“每月显示”并调整 tableView 以响应“下个月”和“上个月”按钮的最干净的方法是什么? 例如,我的 tableView 显示了 2 月的费用。当我触摸下一个按钮时,我想显示一个带有三月费用的 tableView。 您建议使用“月”采用哪种方法?这可能很简单,但对于刚开始的人来说,如果我采取错误的方向,可能会很难。提前致谢

【问题讨论】:

    标签: uitableview core-data uibarbuttonitem


    【解决方案1】:

    我将使用的方法是为该月设置一个 typedef 枚举(只是为了方便)

    typedef enum 
    {
        January = 0,
        February,
        March,
        April,
        May,
        June,
        July,
        August,
        September,
        October,
        November,
        December
    } Month;
    

    然后您将让每个实体都有一个属性,该属性是一个数字,表示该实体关联的月份。 然后,您可以像这样获取与指定月份关联的所有实体:

    NSFetchRequest *request= [[NSFetchRequest alloc] init];
    [request setEntity:[NSEntityDescription entityForName:@"<<Your entity name here>>" inManagedObjectContext:managedObjectContext]];
    NSPredicate *monthPredicate = [NSPredicate predicateWithFormat:@"month.integerValue == %d", (NSInteger)month];
    [request setPredicate:monthPredicate];
    

    该请求应该为您提供与给定月份关联的所有实体。如果需要,您也可以将月份保存为字符串。希望这会有所帮助!

    【讨论】:

    • 感谢您的回复。我需要几天时间才能开始实施它,但你给了我一个起点。以及如何在同一个月显示不同的 tableViews(费用和收入)同步?也就是说,我有一个 TabBar,我可以在其中更改费用和收入。如果我的费用视图设置为特定月份,我希望在选择收入时显示为费用选择的同一月份?感谢您花时间提供帮助。
    • 您的建议符合我的要求。我最终使用了两个实体和一个与多关系的关系。它更适合我的想法。谢谢你让我思考和学习。
    猜你喜欢
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多