新建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 ,結果是子類類名?還是父類類名(已解決)