iOS应用程序沙箱中的默认文件

时间:2014-04-28 16:13:57

标签: ios objective-c file

我正在为iPhone创建一个测验应用。我将所有问题存储在每次打开应用时从NSArray文件加载的.xml中。所有"实例"该文件将是相同的。应用程序,它将从不由用户更改。

我可以用代码对所有问题进行硬编码,但我发现将它放在一个易于被任何文本编辑器编辑的文件中会更加优雅。

但是我如何给每个应用程序"实例"应用程序的副本该文件?该文件应与其他应用程序文件捆绑在一起。

这是我目前使用的代码(在app delegate中)。

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, 
                                                             YES);
NSString *path = documentPaths[0];
path = [path stringByAppendingPathComponent:@"questions.archive"];

NSArray *fileQuestions = [[NSArray alloc] initWithContentsOfFile:path];
if (!fileQuestions)
{
    // Code to add three default questions…

    [fileQuestions writeToFile:path
                    atomically:YES];
}

// And here the "file questions" are transformed to instances of my question class

1 个答案:

答案 0 :(得分:3)

无需尝试将文件存储在Documents目录中。只需将其存储在应用程序包本身即可。这与图像文件,声音文件或任何其他资源完全相同。使文件成为项目的一部分;确保它是 app target 的一部分,以便在构建过程中将其复制到应用程序包中。在正在运行的应用中,使用[[NSBundle mainBundle] pathForResource:ofType:]获取其路径,并像读取此类型的任何文件一样阅读它。