Cocoa教学:使用应用程序资源

在大部分比较简单的程序里,资源的管理和使用都是无缝而且自动化的,你无需用程序去干预 。
但是如果你的程序趋于成熟,可能在某些情况下你就需要用代码去直接访问资源 。直接访问程序中资源的方式也非常直接,下面我们就来介绍一下方法 。
神奇且自动
你在XCode项目中加入Resources目录中的任何文件都会自动添加到你的应用程序中 。你可以通过以下步骤进行验证:
1 在XCode中编译程序 。
2 选中刚刚编译好的.app文件,通常会在build/Debug或者build/Release目录中 。
3 找到程序后,右键点击,选择“显示包内容 。
【Cocoa教学:使用应用程序资源】4 打开Resources目录 。
5 你会发现你添加到XCode项目中的所有文件都放在这个目录中 。
那么现在问题来了,通过代码来最简单存取这些资源的方法是什么呢?很幸运,Cocoa让这件事情变得非常简单 。
读取属性列表模板
我最近需要经常使用一个属性列表文件,做为模板来保存数据 。你可能知道,NSDictionary提供了一种保存字典为属性列表的方法 。那么既然我可以从模板中读取属性列表,在需要的情况下修改其中的一部分的话,我就没有理由必须用代码来从头建立一个字典 。
既然想到了这种办法,我就在程序的Resources目录中保存了一个属性列表的模板 。我只需要从程序的包中读出这个文件,事情就做完了 。下面就是我用来读取属性列表的代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"OutputTemplate"ofType:@"plist"];
NSMutableDictionary *templateDictionary = [NSMutableDictionarydictionaryWithContentsOfFile:path];
NSLog(@"Dictionary was: %@", templateDictionary);
注意我们需要读取的文件名是OutputTemplate.plist.
这样一来我就可以修改NSMutableDictionary的键和值来满足我们的需求了 。修改之后,可以用下面的代码直接写到文件中:
[templateDictionary writeToFile:outputPath atomically:YES];
结论
你可以用这种方法读取你喜欢的任何文件类型 。只要把你想读取的文件加入到Resources目录即可 。

    推荐阅读