iosCoreData用父类的实例对象person接收存有子类的数组,打印person.class,结果是子类类名?还是父类类名(已解决)
新建Person类
person的子类 Student
Teacher
今天做数据库封装时想到的,因为查询出的结果都继承自NSManagerObject,但是他的子类属性又不一定一样,所以我就想我在在查询之后能不能判断他是那个子类并且按照子类的属性进行赋值,所以首先我要数组存的对象的类进行判断
测试如下:(把主要代码贡献如下,其他文件自己建议下吧,很简单)
NSMutableArray * array = [NSMutableArray array]; NSMutableArray * array2 = [NSMutableArray array]; for (int i = 0; i< 5; i++) { Student * stu1 = [[Student alloc]init]; stu1.name =[NSString stringWithFormat:@"jack%i",i]; [array addObject:stu1]; Teacher * teacher = [[Teacher alloc]init]; teacher.name = [NSString stringWithFormat:@"limei%i",i]; [array2 addObject:teacher]; } for (Person * p in array) { NSLog(@"%@------",p.class); } for (Person * p in array2) { NSLog(@"%@------",p.class); } // 从打印结果可以看出虽然我用他的父类接收,.class后仍能显示子类名称,这样从数组中遍历的对象我可以用.class获取他是哪个子类,并判断如何给他赋值 // 例如 for (Person * p in array2) { if (p.class == [Student class]) { NSLog(@"是学生"); }else { NSLog(@"不是学生"); } } if ([array[0] class] == [Student class]) { NSLog(@"是学生"); }else{ NSLog(@"不是学生,是%@",[array[0] class]); }
ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决)ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决)ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决)ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决)
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。