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

如何使用大型csv文件管理ios的内存?,ios,objective-c,memory,Ios,Objective C,Memory,我是ios开发新手,遇到了与内存管理和处理大型数据集的方法相关的问题 现在,我正在加载csv文件,并在应用程序初始化时将相关数据作为对象存储在内存中。一些csv文件大于1MB,我的应用程序总共使用了大约180MB的内存。这显然是一个太高的数字(除非我发现的信息是错误的,这是一个可以接受的数字,然后请让我知道) 我觉得我的方法有一个根本性的缺陷:有没有办法避免将csv文件存储在项目本身中?或者,是否有一种“惰性”加载方式可以让我只需在csv文件中查找信息,而不是一次从csv文件中加载所有数据 任何

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

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

我觉得我的方法有一个根本性的缺陷:有没有办法避免将csv文件存储在项目本身中?或者,是否有一种“惰性”加载方式可以让我只需在csv文件中查找信息,而不是一次从csv文件中加载所有数据

任何帮助都可以。我认为我需要一个新的视角来看待如何更有效地管理这个问题


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

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

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

您可以在构建应用程序时这样做,也可以在应用程序首次运行时将代码构建到应用程序中


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

人们将需要更多关于数据性质的信息,更重要的是,您需要的访问类型。例如,是在应用程序运行期间只需查找特定键信息的键值类型信息,还是在启动时可能需要快速查找大部分的键值类型信息?听起来您可能有CoreData的候选者,但正如@drc所说,这里的信息非常少。请参阅我的编辑。对不起,我不能对项目的细节说得太具体。但是,其中一个csv中的数据元素有一组属性,这些属性可能指向另一个csv文件中的另一个数据元素。