ios CoreData 用父类的实例对象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 ,结果是子类类名?还是父类类名(已解决)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。