关于plist的问题
按照pdf的方法导入了plist也写了get 方法。但是在打印self.questions的时候却没有东西打印出来(如图一),然后我就按照后面调用的方法,想打印一个model1.title出来,但是有图二的报错,请问什么原因。
#import "ViewController.h"
@interface ViewController ()
@property(strong,nonatomic)NSArray*questions;//声明数组
@end
@implementation ViewController
-(NSArray *)questions{//重写get方法
if(_questions==nil){
NSString *path =[[NSBundle mainBundle]pathForResource:@"quetsions" ofType:@"plist"];
//如果没有加载,就加载plist方法
NSArray *dictArr=[NSArray arrayWithContentsOfFile:path];
//因为plist文件是数组类型,所以需要创建一个数组,保存从plist中获得到的数据
NSMutableArray *mutArr=[NSMutableArray array];//创建可变数组,保存从数组dictArr遍历出来的每一个元素
for(NSDictionary *dict in dictArr){//循环字典转模型,将遍历出来的每一个元素,在赋值给对应的模型属性
IdiomModel *model=[[IdiomModel alloc]init];//创建对象;
model.answer = dict[@"answer"];
model.title = dict[@"title"];
model.options = dict[@"options"];//赋值
[mutArr addObject:model];//添加到可变数组
}
_questions = mutArr;//循环完毕赋值给属性
}
return _questions;
}
- (void)viewDidLoad {
[super viewDidLoad];
IdiomModel *model1=self.questions[0];
NSString *name1 = model1.title;
NSLog(@"%@",name1);//测试记载数据是否读取正确
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
第二次打印的代码,
- (void)viewDidLoad {
[super viewDidLoad];
IdiomModel *model1=self.questions[0];
NSString *name1 = model1.title;
NSLog(@"%@",name1);/
正在回答
1、NSString *path =[[NSBundle mainBundle]pathForResource:@"quetsions" ofType:@"plist"];这句代码后面的名称写错了,Resource后面是questions,这个名称写错了是无法获取到数据的,就造成了你打印出来都是为空的情况。为了避免名称写错,其实以后在用到有关plist文件的时候,你都可以直接复制名称,粘贴上去,就不会有错误的情况了。
2、报错是因为没有获取到值,你先将上面的问题解决一下,先获取到值,在进行后面的操作。
- 参与学习 1337 人
- 提交作业 712 份
- 解答问题 1878 个
很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星