如何将文本文件硬编码到iOS应用程序中

时间:2013-01-12 04:50:53

标签: ios objective-c cocoa nsbundle

目前正在使用:

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
                                                 ofType:@"txt"];

这仅在我手动将文件添加到应用程序包中后才有效。

我可以使用文件目录,但情况更糟。

重置SIM后,文件消失。我如何让它留下来?

我如何从那里的某个地方写出文件?喜欢来自源文件?我不想分配几兆字节的NSString对象。

3 个答案:

答案 0 :(得分:2)

关于freenode irc(#iphonedev)的Lyle42:

我不知道这个领域是否存在。通过将任何文件添加到复制文件构建阶段(在构建阶段),它们将持久存在于构建中。

然后这段代码:

NSString *_filePath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"txt"];

NSLog(@"%@",_filePath);

NSData *_binary = [NSData dataWithContentsOfFile:_filePath];  

NSString *_fileContents = [[NSString alloc] initWithData:_binary encoding:NSUTF8StringEncoding];

工作得很好。 (将文件的内容加载到NSString中)。

copy files build phase

答案 1 :(得分:1)

您可以使用它来获取文件的路径

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documentPaths objectAtIndex:0];
filePath = [path stringByAppendingPathComponent:file_name];

您可以使用

从应用包中获取该文件
NSString *pathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:file_name];

答案 2 :(得分:0)

  

我可以使用文档目录,但情况更糟。

不是真的。文档目录是持久性的,是应用程序创建的基本文档的推荐目录。此外,它由iTunes备份,可以指定用于iCloud备份。应用套装无法与之竞争!

  

重置SIM后,文件消失。我如何让它留下来?

你不能,一旦模拟器被“重置”(我的意思是对所有数据和应用程序的硬擦除),就不会保存任何内容。但是,在测试版本之间,除非您在/tmp中存储内容,否则从应用程序包中复制的数据应该存在。此外,捆绑中的对象在构建阶段被“刷新”(重新复制),这意味着您的资源不会被清除,只是重置为项目中指定的资源。

  

我如何从那里的某个地方写出文件?喜欢来自   源文件?我不想分配几兆字节的NSString   对象

要将文件读入内存,最终必须变成“几兆字节的NSString”,但是如果你真的想在你的大型字符串对象的计划中添加一点IO,那么看一下{{1 }}