我有一个对象数组,例如
var objects: [AnimalDetailModel] = ...
Run Code Online (Sandbox Code Playgroud)
还有三堂课
AnimalDetailModel 是基类
DogDetailModel 是延伸的课程 AnimalDetailModel
CatDetailModel 是延伸的课程 AnimalDetailModel
从A datasource创建并添加DogDetailModel,,CatDetailModel和AnimalDetailModel的数组objects。并填充的tableView当我想要的是得到一个对象表单对象,并检查它是否是类型的DogDetailModel,CatDetailModel或AnimalDetailModel像
if let objects[indexPath.row] as? DogDetailModel {
return DogTableCell
} else if let objects[indexPath.row] as? CatDetailModel {
return CatTableCell
} else {
return AnimalTableCell
}
Run Code Online (Sandbox Code Playgroud)
这样做时,我得到的类型AnimalDetailModel没有下标成员。我们如何从对象数组中检查对象的类型?
您可以使用short和simple is属性。
您的情况将是:
switch objects[indexPath.row] {
case is DogDetailModel:
return DogTableCell
case is CatDetailModel:
return CatTableCell
default:
return AnimalTableCell
}
Run Code Online (Sandbox Code Playgroud)