【发布时间】:2011-07-24 00:51:09
【问题描述】:
我需要能够在针对内存受限的移动设备的应用程序中将一些相当大的文本文件 (100Mb+) 导入 CoreData。每个文件都包含大量的小记录,这些小记录将在添加到数据库之前进行处理。查看许多来源,推荐的读取文本文件的方法似乎是:
NSString *stringFromFileAtPath = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
乍一看,这似乎是一种非常占用内存的方式来做我需要的事情,但鉴于似乎没有其他推荐的方式来读取文件,我猜测 Apple 已经考虑到了这一点并做他们自己的内存管理 - 可能仅在必要时才从文件中出错?
如果不是,最好的方法是使用 NSStream 和 NSScanner 一次检索和处理一行文本?
如果推荐的方法确实可以很好地处理内存,那么下一步通常是:
NSArray *lines = [stringFromFileAtPath componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
如果我使用这种方法,我假设它需要内存中的完整文本文件,所以它又会占用大量内存。为了节省内存,我最好使用 NSScanner,或者考虑到移动设备(当然是一些较旧的设备)的有限处理能力,是否需要永远完成?
提前感谢您在这个问题上给我的任何帮助。
戴夫
【问题讨论】:
标签: objective-c ios core-data