iOS应用程序沙盒中的默认文件
我正在为iPhone创建一个测验应用程序。我将所有问题存储在一个iOS应用程序沙盒中的默认文件,ios,objective-c,file,Ios,Objective C,File,我正在为iPhone创建一个测验应用程序。我将所有问题存储在一个NSArray中,该数组在每次打开应用程序时从.xml文件加载。该文件在应用程序的所有“实例”中都是相同的,用户永远不会更改该文件 我可以用代码对所有问题进行硬编码,但我发现将其保存在一个文件中更为优雅,任何文本编辑器都可以轻松编辑该文件 但是我如何为每个应用程序的“实例”提供该文件的副本?该文件应与其他应用程序文件捆绑在一起。 这是我目前使用的代码(应用程序内委托) 无需尝试将文件存储在Documents目录中。只需将其存储在应用
NSArray
中,该数组在每次打开应用程序时从.xml
文件加载。该文件在应用程序的所有“实例”中都是相同的,用户永远不会更改该文件
我可以用代码对所有问题进行硬编码,但我发现将其保存在一个文件中更为优雅,任何文本编辑器都可以轻松编辑该文件
但是我如何为每个应用程序的“实例”提供该文件的副本?该文件应与其他应用程序文件捆绑在一起。
这是我目前使用的代码(应用程序内委托)
无需尝试将文件存储在Documents目录中。只需将其存储在应用程序包中即可。这与图像文件、声音文件或任何其他资源的工作方式完全相同。使文件成为项目的一部分;确保它是应用程序目标的一部分,以便将其作为构建过程的一部分复制到应用程序包中。在正在运行的应用程序中,使用
[[NSBundle mainBundle]pathForResource:ofType:][/code>获取其路径,并像读取任何此类文件一样读取它。无需尝试将该文件存储在Documents目录中。只需将其存储在应用程序包中即可。这与图像文件、声音文件或任何其他资源的工作方式完全相同。使文件成为项目的一部分;确保它是应用程序目标的一部分,以便将其作为构建过程的一部分复制到应用程序包中。在正在运行的应用程序中,使用[[NSBundle mainBundle]pathForResource:ofType:][/code>获取其路径,并像读取任何此类文件一样读取它。无需尝试将该文件存储在Documents目录中。只需将其存储在应用程序包中即可。这与图像文件、声音文件或任何其他资源的工作方式完全相同。使文件成为项目的一部分;确保它是应用程序目标的一部分,以便将其作为构建过程的一部分复制到应用程序包中。在正在运行的应用程序中,使用[[NSBundle mainBundle]pathForResource:ofType:][/code>获取其路径,并像读取任何此类文件一样读取它。无需尝试将该文件存储在Documents目录中。只需将其存储在应用程序包中即可。这与图像文件、声音文件或任何其他资源的工作方式完全相同。使文件成为项目的一部分;确保它是应用程序目标的一部分,以便将其作为构建过程的一部分复制到应用程序包中。在正在运行的应用程序中,使用[[NSBundle mainBundle]pathForResource:ofType::
获取其路径,并像读取任何此类文件一样读取它。我不确定您在问什么。你在问如何将xml文件作为资源添加到应用程序中?是的,我不知道它叫什么。我不确定你在问什么。你在问如何将xml文件作为资源添加到应用程序中?是的,我不知道它叫什么。我不确定你在问什么。你在问如何将xml文件作为资源添加到应用程序中?是的,我不知道它叫什么。我不确定你在问什么。你是在问如何将xml文件作为资源添加到应用程序中吗?是的,我不知道它叫什么。试过了,效果非常好!您还可以在Xcode中直接编辑带有语法高亮显示的.xml文件,这也很好。尝试过了,效果非常好!您还可以在Xcode中直接编辑带有语法高亮显示的.xml文件,这也很好。尝试过了,效果非常好!您还可以在Xcode中直接编辑带有语法高亮显示的.xml文件,这也很好。尝试过了,效果非常好!您还可以在Xcode中直接编辑.xml文件并突出显示语法,这也很好。
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