如何使用大型csv文件管理ios的内存?

时间:2014-06-07 02:09:49

标签: ios objective-c memory

我是ios开发的新手,我遇到了与内存管理和处理大型数据集的方法有关的问题。

现在,我正在加载csv文件并在应用程序初始化时将相关数据作为对象存储在内存中。一些csv文件大于1MB,总的来说,我的应用程序使用大约180MB的内存。这显然是一个太高的数字(除非我发现的信息是错误的,这是一个可接受的数字,请告诉我)。

我觉得我的方法有一个根本的缺陷:有没有办法可以避免将csv文件存储在项目本身中?或者,有一种"懒惰"加载我可以这样做,我可以简单地在csv文件中查找信息,而不是立即加载它的所有数据?

任何帮助都可以。我认为我需要一个关于如何更有效地管理这个问题的新观点。

编辑:我需要的大部分信息都是某种键查找,这些查找的搜索树可能跨越多个csv文件。

1 个答案:

答案 0 :(得分:0)

您的基本问题是CSV不是一种好的“增量”存储格式。我的意思是你无法有效地将你感兴趣的数据部分加载到内存中 - 你必须加载整个内容,然后根据你想要的位数。

更好的方法是将CSV中的数据复制到另一个数据存储中。 Core Data或多或少是推荐的Apple内置数据存储,但它带来了很多你可能不需要的开销。您也可以直接从应用程序代码中使用SQLite,或在FMDB上使用更薄的Objective-C图层。

您可以在构建应用时执行此操作,或在应用中构建代码,以便在第一次运行时执行此操作。

之后,您可以使用相关的API来请求您执行任何操作所需的数据。