如何在xcode中的应用程序包中写入文本文件

时间:2015-02-11 06:42:17

标签: ios objective-c xcode

beg-counter.txt文件已经在我的应用程序包中....现在我想写进去...但我不能......

我可以阅读该文件,但无法写入....

这是我的代码.......

level_beg_cnt的值假设为2。

NSError *错误;

NSString * Path = [[NSBundle mainBundle] pathForResource:@" beg_counter" ofType:@" TXT"];

    NSLog(@"string to write:%@",level_cnt_beg);




    [level_cnt_beg writeToFile:Path atomically:YES
                      encoding:NSUTF8StringEncoding error:&error];

2 个答案:

答案 0 :(得分:0)

您无法写入应用程序包,它是只读的,

您可以将文件写入文档目录。

NSError *error;
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; // or [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath = [docPath stringByAppendingPathComponent:@"beg_counter.txt"];

[level_cnt_beg writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

您还可以将文件保存到temp目录和Library目录,有关详细信息,请阅读此文档,Where you should put your files

由于

答案 1 :(得分:0)

捆绑包是只读的。你不想乱用它有两个原因:

代码签名:签名通过捆绑包的内容进行验证;如果你弄乱了这个包,你就会破坏签名。

应用更新:通过将新应用包替换为新下载的应用包来进行更新;你所做的任何改变都会丢失。

你应该保存的东西:

文档:如果您希望它保留并备份

Library / Caches:如果你只想缓存下载的数据,比如个人资料照片;系统将自动删除,如果房间较低,除非您指定了特殊的“不删除”标记。

tmp:临时文件,在您的应用未运行时删除 有关完整说明,请参阅文件系统编程指南和QA1719。

从关注SO Answer

开始