欢迎投稿

今日深度:

ios CoreData 用父类的实例对象person接收存有子类的

ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决),coredata存储数组


新建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 ,结果是子类类名?还是父类类名(已解决)

www.htsjk.Com true http://www.htsjk.com/shujukunews/8306.html NewsArticle ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决),coredata存储数组 新建Person类 person的子类 Student Teacher 今天做数据库...
评论暂时关闭