2010-02-04 51 views
1

我正在研究一个应用程序,其中的大部分将是一个类似电子表格的视图(数字值尽管是列和行的名称)。在这种情况下使用Core Data是否有意义?我担心效率问题,因为我知道Core Data本身并不支持数组,并且我不觉得这种关系适合我的情况。但也许我错了?使用核心数据的类似电子表格的应用程序?

回答

1

尽管核心数据对于使用SQLite存储类型的提取请求非常快,但有一件事会让你放慢速度,这就是所有-valueForKey/Path:调用一旦实现对象就会获取数据点(您的单元格)的值(即,查询数据库的速度非常快,但是一旦它们进入后,查询它们的属性的错误对象在中慢得多)。

不要低估这些电话的五万个重量,特别是在排序和显示方面。在托管对象模型中有几种不同的方式来表示它们,但它们都遭受同样的问题,并且在性能方面有各种折衷,等于“不够快”以跟踪任意大小的矩阵中的单个单元。如果你一直知道你的电子表格会有30列,这个问题就大大简化了......但这将是一个相当差的电子表格。 :-)

即使您使用了大量缓存(例如文档中提到的“预先计算的获取”方法),您只会将负担转移到内存上,这可能无法挺起来以及在不同的机器上。

我的建议是让Core Data离开这个。

0

虽然没有在Core-Data中特别实现,但我在基于Web的应用程序中使用了Java和Hibernate。

如果你能预测你需要显示哪些数据(这也算冬眠),核心数据是相当快的。因此,您应该从模型和背景数据库中分离出视图以缓存可用数据并使用粗粒度操作来获取重用的单元。

如果模型中存在很多依赖关系,则对数据库的粗粒度访问可能导致将整个信息网络提取到模型中。目前我使用的是多级公司余额,只要将任何对应用程序的访问简单地将整个数据结构提取到内存中即可。

0

我做了(相当天真的实现)核心数据电子表格的使用Cocoa绑定到一个NSTableView应用程序,并发现表现不可接受的,一旦它得到了高达约20行和20列。但这是我的第一个Cocoa项目,并没有(在很大程度上仍然不知道)优化Core Data的第一件事。

你可以在这里下载和试用应用程序:

http://frankschmitt.org/projects/checkpoint

,如果你有兴趣(联系在该网站上的信息),我可以送你的来源。

+0

谢谢,弗兰克,但我很害怕我的应用程序必须处理顺利,绝对超过20行和列......目前,我并不需要编写代码的帮助(但?:))但而如果在这种类型的应用程序中使用核心数据可能是一个很好的选择或不是一些一般线索。 – dzolanta 2010-02-04 20:49:32

相关问题