2

我正在开发具有以下要求的基于 NSPersistentDocument 的 Objective-C Coredata (SQLite) 应用程序:

  1. 简单模型:从 CSV 导入 50-60K 记录,每个记录 +30 个字段。
  2. 不需要支持写入/添加/删除记录。
  3. NEEDED 强烈支持“显示/查看”过滤、排序和分组(聚合)的信息,

能够在类似于以下的请求中对记录进行分组:

[fetchRequest setPropertiesToGroupBy:…]
[fetchRequest setPropertiesToFetch:…]

我的测试选项 1

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

  • 有用。
  • 优点:只需要很少的代码,可以进行抓取,并且可以设置过滤谓词和排序描述符。
  • 缺点:不支持记录聚合,无法将附加信息添加到其获取请求到 groupBy。

我的测试选项 2

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

  • 作品。
  • 优点:它支持我想要的。我自己做 Fetch 请求,我可以使用过滤谓词、排序描述符和聚合(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";
    }
}

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

谢谢路易斯

4

0 回答 0