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