设为首页 加入收藏

TOP

iosCoreData用父类的实例对象person接收存有子类的数组,打印person.class,结果是子类类名?还是父类类名(已解决)
2015-11-21 01:31:27 来源: 作者: 【 】 浏览:0
Tags: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 ,结果是子类类名?还是父类类名(已解决)

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇m-s的半同步设置 下一篇redis基础入门

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: