写入 XCode 项目目录中的文件

Posted

技术标签:

【中文标题】写入 XCode 项目目录中的文件【英文标题】:Write to a file in XCode project directory 【发布时间】:2012-07-23 20:02:39 【问题描述】:

我有一个包含在我的 XCode 项目中的文件,我想覆盖它。该文件在名为 book 的目录中名为 Introduction.html

在屏幕截图中,您可以看到它在目录中的位置以及我对它的各种写入尝试。

任何帮助将非常感谢!

编辑我的代码在图片中不是那么可读:

 //Atempt 1
NSString *myString = [mutableArray objectAtIndex:0];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"/book/Introduction.html"];
[myString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

//Attempt 2
[myString writeToFile:@"/book/Introduction.html" atomically:NO encoding:NSUTF8StringEncoding error:&error];

//Attempt 3
NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths2 objectAtIndex: 0];
NSString *docFile = [docDir stringByAppendingPathComponent: @"book/Introduction.html"];    
[myString writeToFile: docFile atomically:NO encoding:NSUTF8StringEncoding error:&error];


//Attempt 4
NSFileHandle *file;
NSMutableData *data;
const char *bytestring = "black dog";    
data = [NSMutableData dataWithBytes:bytestring 
                             length:strlen(bytestring)];
file = [NSFileHandle fileHandleForUpdatingAtPath: 
        @"book/Introduction.html"];
if (file == nil)
    NSLog(@"Failed to open file");
[file seekToFileOffset: 10];
[file writeData: data];
[file closeFile];
[file release];

【问题讨论】:

【参考方案1】:

伊特贾瓦,

据我阅读文档,“在我的 XCode 项目中”的文件不能被覆盖,因为 ios 中的沙盒机制不允许您的应用访问该空间。我记得读过指令“如果您需要覆盖应用程序附带的数据,请将它们复制到 Documents 目录并覆盖副本。”

所以我会说您的尝试 1 最接近,保存您需要先将文件从资源包复制到 Documents 目录的事实。

问候,诺比

【讨论】:

以上是关于写入 XCode 项目目录中的文件的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Xcode 7 后无法写入文档目录

Xcode单元测试:尝试将测试数据从单元测试写入项目文件夹时权限被拒绝

Swift3 不写入文件

xCode 游乐场和将文件写入文档

在 Xcode 8 和 Swift 3 中写入文本文件并在应用重新启动时保持更改 [重复]

如何在 Swift 中将文件写入位于 Apple Files App 中的文件夹