将XML文件编译为二进制文件

时间:2009-04-23 02:02:19

标签: iphone objective-c file resources

我想在iPhone应用程序中解析和XML文件,而不需要去磁盘。 我可以这样做吗?怎么样?我在使用MSVC的应用程序中包含了一个TXT帮助文件。

我将XML文件放在项目中名为Resources的文件夹/组中 我在proj目录中有XML文件 我右键单击了Resources文件夹并选择了 add - >现有文件
我右键单击XML文件并选择 GetInfo

我尝试改变路径类型{绝对,相对于项目等} 我使用时,我的程序在模拟器上运行良好:

NSString * const DG_XmlRecipeFile = @"/Users/appleuser/Cocoa/iHungry6/Recipes.xml";

在我看来,它也适用于:

NSString * const DG_XmlRecipeFile = @"Recipes.xml";

如果我正确设置了路径类型。它没有。

我是第一个计时器。感谢您阅读此内容,Mark

2 个答案:

答案 0 :(得分:3)

Xcode将项目资源复制到应用程序包。您可以按如下方式访问捆绑包中的文件:

NSString *DG_XmlRecipeFile = [[NSBundle mainBundle] pathForResource:@"Recipes" ofType:@".xml"];

捆绑包中的文件是只读的。如果要修改文件,则需要将其复制到可以修改的位置。您的应用程序的文档目录适用于此。

NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDirectory = [[paths objectAtIndex:0] retain];
NSString *newFilePath = [docsDirectory stringByAppendingPathComponent:@"Recipes.xml"];    
NSError  *error = nil;

[[NSFileManager defaultManager] copyItemAtPath:DG_XmlRecipeFile toPath:newFilePath error:&error];

答案 1 :(得分:1)

我认为您所指的路径类型不是生成的应用包中的资源路径。这是在.proj文件中引用文件的方式。