Ios 将NSArray写入计算机上的文件一次

Ios 将NSArray写入计算机上的文件一次,ios,iphone,csv,nsarray,Ios,Iphone,Csv,Nsarray,我在CSV文件中存储了大量数据。我可以将文件解析为NSArray,但这个过程在电话上大约需要1分钟。然后,我可以使用 [NSArray writeToFile:filePath atomically:YES] 我是否可以将此NSArray保存到计算机上的文件中,然后只需从appBundle中的文件中提取NSArray,而不必在手机上解析它 换句话说,我有一个巨大的CSV文件,我想将其转换为appBundle中的一个文件,这样就可以快速转换为NSArray。我不希望应用程序需要解析这个文

我在CSV文件中存储了大量数据。我可以将文件解析为NSArray,但这个过程在电话上大约需要1分钟。然后,我可以使用

    [NSArray writeToFile:filePath atomically:YES]
我是否可以将此NSArray保存到计算机上的文件中,然后只需从appBundle中的文件中提取NSArray,而不必在手机上解析它


换句话说,我有一个巨大的CSV文件,我想将其转换为appBundle中的一个文件,这样就可以快速转换为NSArray。我不希望应用程序需要解析这个文件。那么,如何使用Mac程序(可能是您正在编写的iOS应用程序中的目标)从我的CSV文件中创建一个可读的文件

将CSV解析为NSArray(您声明可以这样做)
使用将
NSArray
保存到Mac程序的文件中

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
将其添加为Xcode中的资源。使用从应用程序包加载它

+ (id)arrayWithContentsOfFile:(NSString *)aPath

是的,您可以,但有一些限制:

在iOS中,应用程序包是只读的。作为创建应用程序的一部分,您可以构建此阵列并将其保存到捆绑包中,但在运行时不能这样做

我有时会编写代码,在模拟器的documents目录中创建文件,然后手动将文件从模拟器的沙箱目录复制到我的应用程序中,并复制到项目中

如果要在运行时构建阵列并将其保存到磁盘,则需要将其保存到沙箱中允许的目录之一,可能是documents目录

只有当数组中包含的对象的整个“对象图”都是“属性列表对象”(NSString、NSData、NSDate、NSNumber、NSArray或NSDictionary对象)时,才可以将数组保存到文件中。您可以有一个包含字符串、数字、数据、日期等数组的字典数组,可以任意组合,但如果其他对象中有一个对象,则保存将失败

另一点:

NSArray方法writeToFile:atomicaly:将数组转换为XML属性列表文件。请注意,XML属性列表比二进制属性列表文件更大,保存和加载速度也更慢


查看NSPropertyListSerialization类参考,以获取有关将对象保存到二进制属性列表的信息,该列表更紧凑、更快。

当然,您可以将所需的任何文件(在合理范围内,按大小)放入包中。是的,我意识到了这一点,但如何使[NSArray initWithContentsOfFile:]能够读取文件非常感谢你。我现在将研究NSPropertyListSerialization,因为我的xml文件是60MB