plist文件名绝对不能叫info
// 凡是参数名为File,传递的都是文件的全路径
// 一个NSBundle对象对应一个资源包(图片、音频、视频、plist等文件)
// NSBundle的作用:用来访问与之对应的资源包内部的文件,可以用来获得文件的全路径
// 项目中添加的资源都会被添加到主资源包中
// [NSBundle mainBundle]关联的就是项目的主资源包
// 将文件拖入工程时addToTarget选项就是添加到主资源包的过程
//NSString *filePath = @"shops.plist"
NSBundle *bundle = [NSBundle mainBundle];
NSString *filePath = [bundle pathForResource:@"shops" ofType:@"plist"];
self.shops = [NSArray arrayWithContentsOfFile:filePath];
![](https://img.haomeiwen.com/i1662422/e36813bdf77c599c.png)
这个错误就是在没有将外来文件加入资源包的时候调用那个文件里的类或方法会出的错
- 解决办法
- 删了重拖
-
在工程设置中进行添加
![Uploading QQ20160623-1_881464.png . . .]
![](https://img.haomeiwen.com/i1662422/aa6ee09216d0f158.png)
// 其中Compile Sources 是放代码文件的,Copy Bundle Resources是放资源文件的
在数据比较大,而用户可能不会使用的时候,可以使用懒加载来加载数据(重写getter方法),只有用户用到数据的时候才去加载数据,节省内存
- (NSArray *)shops{
if (_shops == nil) {
NSString *file = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
self.shops = [NSArray arrayWithContentsOfFile:file];
}
return _shops;
}
网友评论