我有一个超类作为ChartModel,以及ChartModel中的子类,其中有一个名为LineChartModel的模型,并且具有属性categoryType
。
现在我有一个方法接受一个参数as(DataModel *),如:
- (void) showChartWithModel:(ChartModel *)dataModel {
if ([dataModel respondsToSelector:@selector(categoryType)]) {
if ([dataModel categoryType] == CategoryTypeDate) { // compiler error
}
}
}
现在编译器抱怨[dataModel categoryType],因为categoryType
中没有定义ChartModel
。我不要希望将categoryType
放入super class
,因为不是每张图都有这样的属性。如何解决这个问题?感谢。
答案 0 :(得分:0)
您可以将dataModel
投射到id
:
- (void) showChartWithModel:(ChartModel *)dataModel {
if ([dataModel respondsToSelector:@selector(categoryType)]) {
if ([(id)dataModel categoryType] == CategoryTypeDate) { // compiler error
}
}
}
或者您可以将其投放到LineChartModel
,在这种情况下我会测试它:
- (void) showChartWithModel:(ChartModel *)dataModel {
if ([dataModel isKindOfClass:[LineChartModel class]]) {
if ([(LineChartModel *)dataModel categoryType] == CategoryTypeDate) { // compiler error
}
}
}