包(bundle)是一种特定类型的文件夹,其中的内容遵循特定的结构。NSBundle 主要作用去获取添加到项目 Resources 文件夹中的资源。比如 .plist 后缀 XML 格式的文件,它导入到 XCODE 中可以看做一个字典对象。
使用
获取资源一般在 viewDIdLoad 方法,即视图第一次加载时。
- (void)viewDidLoad {
[super viewDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSURL *plistURL = [bundle URLForResource: @"statedictionary" withExtension: @"plist"];
self.stateZips = [NSDictionary dictionaryWithContentsOfURL: plistURL];
NSArray* allStates = [self.stateZips allKeys];
NSArray *sortedStates = [allStates sortedArrayUsingSelector: @selector(compare:)];
self.fillingTypes = sortedStates;
NSString *selectedState = self.fillingTypes[0];
self.breadTypes = self.stateZips[selectedState];
}
使用 URLForResource 方法来定位资源,statedictionary.plist 是包含美国州和对应邮编的字典,可以直接拖入到 XCODE 中。
运行程序,发现 URLForResource 无法获取到资源。这是因为工程并不认为 statedictionary.plist 文件是属于这个工程的。
Target membership
Target membership 是指在某个工程中,哪个文件归属于哪个工程。
勾选 Pickers 工程即可。
参考
http://www.cnblogs.com/graphics/p/4117353.html