我正在研究一个应用程序,其中的大部分将是一个类似电子表格的视图(数字值尽管是列和行的名称)。在这种情况下使用Core Data是否有意义?我担心效率问题,因为我知道Core Data本身并不支持数组,并且我不觉得这种关系适合我的情况。但也许我错了?使用核心数据的类似电子表格的应用程序?
回答
尽管核心数据对于使用SQLite存储类型的提取请求非常快,但有一件事会让你放慢速度,这就是所有-valueForKey/Path:
调用一旦实现对象就会获取数据点(您的单元格)的值(即,查询数据库的速度非常快,但是一旦它们进入后,查询它们的属性的错误对象在和中慢得多)。
不要低估这些电话的五万个重量,特别是在排序和显示方面。在托管对象模型中有几种不同的方式来表示它们,但它们都遭受同样的问题,并且在性能方面有各种折衷,等于“不够快”以跟踪任意大小的矩阵中的单个单元。如果你一直知道你的电子表格会有30列,这个问题就大大简化了......但这将是一个相当差的电子表格。 :-)
即使您使用了大量缓存(例如文档中提到的“预先计算的获取”方法),您只会将负担转移到内存上,这可能无法挺起来以及在不同的机器上。
我的建议是让Core Data离开这个。
虽然没有在Core-Data中特别实现,但我在基于Web的应用程序中使用了Java和Hibernate。
如果你能预测你需要显示哪些数据(这也算冬眠),核心数据是相当快的。因此,您应该从模型和背景数据库中分离出视图以缓存可用数据并使用粗粒度操作来获取重用的单元。
如果模型中存在很多依赖关系,则对数据库的粗粒度访问可能导致将整个信息网络提取到模型中。目前我使用的是多级公司余额,只要将任何对应用程序的访问简单地将整个数据结构提取到内存中即可。
我做了(相当天真的实现)核心数据电子表格的使用Cocoa绑定到一个NSTableView应用程序,并发现表现不可接受的,一旦它得到了高达约20行和20列。但这是我的第一个Cocoa项目,并没有(在很大程度上仍然不知道)优化Core Data的第一件事。
你可以在这里下载和试用应用程序:
http://frankschmitt.org/projects/checkpoint
,如果你有兴趣(联系在该网站上的信息),我可以送你的来源。
- 1. 没有核心数据的伪数据表/电子表格
- 2. 在核心数据的应用程序
- 3. 使用谷歌电子表格作为核心数据对象的数据源
- 4. 我应该使用核心数据的实时应用程序
- 5. 使用XCode的iOS 8.0应用程序的核心数据
- 6. 使用核心电话的通用应用程序
- 7. 设计使用核心数据的聊天应用程序
- 8. 使用核心数据的应用程序崩溃
- 9. iPhone应用程序更新(在sqlite的使用核心数据)
- 10. 核心数据详细视图像默认电子邮件应用程序
- 11. Android应用程序将数据推到谷歌电子表格
- 12. 转化编程数据应用为核心的数据应用
- 13. 使用核心数据更新Iphone应用程序内容
- 14. 使用核心数据中的新数据升级应用程序
- 15. 如何在.NET核心应用程序中使用.NET核心类库?
- 16. 使用多线程核心数据应用程序设计的帮助
- 17. 核心数据迁移问题 - 它使应用程序崩溃
- 18. 保存数据时核心数据应用程序崩溃
- 19. 如何解析XML数据到应用程序核心数据
- 20. 为核心数据应用程序提供基础数据?
- 21. 核心数据财务应用程序数据模型
- 22. 核心数据实用程序崩溃
- 23. Mac/iPhone应用程序 - 将核心数据同步到iCloud和设备(使用核心数据)
- 24. iPhone应用程序的核心数据,升级到App Store后?
- 25. 简单的核心数据示例应用程序?
- 26. 核心数据未保存图像的iPhone应用程序
- 27. 核心数据iPhone应用程序的设计模式
- 28. 具有核心数据的iPad分割视图应用程序
- 29. 关于核心数据应用程序的建议
- 30. iPhone应用程序中的核心数据错误。 “_OBJC_CLASS _ $ _ NSFetchedResultsController”
谢谢,弗兰克,但我很害怕我的应用程序必须处理顺利,绝对超过20行和列......目前,我并不需要编写代码的帮助(但?:))但而如果在这种类型的应用程序中使用核心数据可能是一个很好的选择或不是一些一般线索。 – dzolanta 2010-02-04 20:49:32