程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> iosCoreData用父類的實例對象person接收存有子類的數組,打印person.class,結果是子類類名?還是父類類名(已解決)

iosCoreData用父類的實例對象person接收存有子類的數組,打印person.class,結果是子類類名?還是父類類名(已解決)

編輯:DB2教程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved