保存数据,在运行时使用

问题描述:

我有一个iOS应用我试图建立一个从.XLSX(MS Excel文件)我有呈现的用户数据。该文件有近11,000行,每行20列。我已经构建了一个解析器来将每行转换为NSObject的子类,每列都是一个实例变量。我做了符合NSCoding它,添加的每个实例的NSDictionary,与它的关键是原始文件的第一行,并存档了。我的问题是,我不想将这样一个巨大的NSDictionary解锁,访问最多20个或其中的对象,我可能需要在任何给定的时间。保存数据,在运行时使用

现在的问题是:如何以这种方式来保存这些数据块,我没有11,000个对象生活在堆中,并且仍然能够将我需要的那些对象加载到应用程序中运行?

我相信你最好的选择是将数据导出到数据库。

最简单的解决方案是SQLiteCoreData

我会和CoreData一起去,因为它会为您节省大量的开发时间(但您需要花一些时间来熟悉CoreData)。此外,它可能会考虑有关仅保留在内存中使用的对象的内存问题。

基本上,CoreData是一个对象图,这意味着它可以让你加载仅在需要时(对于SQLite的存储类型)的曲线图的部分。

从你所描述的,你有一个单一的实体(含20列行),你想使用一些类型的查询,而无需加载文件中的所有实体访问。

的CoreData当量将是:
1)定义在核心数据的实体(一次,在模型设计器)
2)创建CoreData堆(为一个简单的设计,这是自动生成的)
3 )创建一个NSPredicate选择您喜欢
4实例)创建一个NSFetchRequest定义访问数据
5)使用NSFetchedReaultsController 6执行主上下文的请求)显示搜索结果

你可以创建一个使用核心数据的新项目,并看看它是如何工作的一个例子

+0

谢谢,我一直在通过Big Nerd Ranch指南去iOS编程,当时我停止了一半的路程在我自己身边摆弄一下。我打开了书上看到CoreData是什么页面上,翻转它,并发现我离开了我的书签他们开始覆盖CoreData很页面上,我有一点阅读的事,但我已经有一个项目学习准备好的概念去。 再次,谢谢。 – 2013-04-27 18:44:50