推荐核心数据/ NSTableView过滤,排序+ AGGREGATION(分组依据)

时间:2013-01-17 13:46:38

标签: objective-c core-data nstableview nsarraycontroller

我正在开发一个具有这些要求的Objective-C Coredata(SQLite),基于NSPersistentDocument的应用程序:

  1. 简单模型:从CSV导入50-60K记录,+ 30个字段 每。
  2. 不需要支持编写/添加/删除记录。
  3. 需要强力支持“显示/查看”过滤后的信息, 已排序,和GROUPED(聚合),
  4. 能够将记录分组为类似于:

    的请求
    [fetchRequest setPropertiesToGroupBy:…]
    [fetchRequest setPropertiesToFetch:…]
    

    我的测试选项1

    我使用了绑定到Coredata Entity和NSTableView的NSArrayController

    • 它有效。
    • 优点:需要的代码很少,提取和设置 过滤谓词和排序描述符。
    • 缺点:不支持聚合 记录,不可能添加到其获取请求中 groupBy的其他信息。

    我的测试选项2

    以编程方式获取,将结果保留在NSDictionary的NSArray中,并使用绑定到数组类和NSTableView的NSArrayController

    • 作品。
    • 优势:它支持我想要的东西。自己执行获取请求我可以使用过滤谓词,排序描述符和AGGREGATION(groupBy)。
    • 缺点:我猜它不是很有效率。

    每次更改filter / sort / groupby选项时,将结果保留为nsdictionary的nsarray听起来像是一种无效的方法。这是NSArray上的结果,因为你可以看到每个记录上都重复了键,消耗了内存和cpu周期......

    {
        {
            "f_01_Type" = "typeA";
            "f_02_Status" = "statusX";
            :
            "f_32_Period" = "2013010102";
        },
        :
         {
            "f_01_Type" = "typeF";
            "f_02_Status" = "statusU";
            :
            "f_32_Period" = "2009011102";
        }
    }
    

    您推荐的解决方案是什么?还有其他想法要探索吗?

    由于 路易斯

0 个答案:

没有答案