具有特定类型的对象数组

Sar*_*Mjn 5 arrays swift

我有一个对象数组,例如

var objects: [AnimalDetailModel] = ...
Run Code Online (Sandbox Code Playgroud)

还有三堂课

  • AnimalDetailModel 是基类

  • DogDetailModel 是延伸的课程 AnimalDetailModel

  • CatDetailModel 是延伸的课程 AnimalDetailModel

从A datasource创建并添加DogDetailModel,,CatDetailModelAnimalDetailModel的数组objects。并填充的tableView当我想要的是得到一个对象表单对象,并检查它是否是类型的DogDetailModelCatDetailModelAnimalDetailModel

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没有下标成员。我们如何从对象数组中检查对象的类型?

Vol*_*lan 9

您可以使用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)