我正在开发具有以下要求的基于 NSPersistentDocument 的 Objective-C Coredata (SQLite) 应用程序:
- 简单模型:从 CSV 导入 50-60K 记录,每个记录 +30 个字段。
- 不需要支持写入/添加/删除记录。
- 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";
}
}
您推荐的解决方案是什么?还有其他想法可以探索吗?
谢谢路易斯