0
说我有以下几点:有条件地转换失败
class ContentSelectableViewController<T: NSManagedObject> : UIViewController { //... }
class PersonSelectionViewController: ContentSelectableViewController<Person> { // ... }
class PlaceSelectionViewController: ContentSelectableViewController<Place> { // ... }
然后在这些子类的实例,我有一些代码:
if let navCtrl = self.navigationController {
for viewController in navCtrl.viewControllers.reversed() {
if viewController is ContentSelectableViewController {
log.info("Worked for \(viewController.description)")
}
if let vc = viewController as? ContentSelectableViewController {
// This should be equivalent to the above.
}
}
}
我的问题是,当我有一堆堆满了这个泛型基类的子类,它在检查它们是否为ContentSelectableViewController
时并不总是返回真(进入if语句),我不明白为什么。它们从相同的基类继承而来。
编辑:
我猜这是因为类的一般性质。对于调用它的子类,if语句的计算结果为true。
都是为“是”条件要检查的viewController类型等于ContentSelectableTableViewController和第二个条件你铸造的viewController到ContentSelectableTableViewController不同。 – Pushpendra
是的,我知道。这不是问题。问题是为什么这些if语句对通用的一个子类评估为真,而不是另一个。 – horseshoe7