[swift-users] How to check the type of a concrete class that inherits from a generic class?

Slava Pestov spestov at apple.com
Sat Oct 7 01:38:36 CDT 2017


Can you post a self-contained example, including the declaration of NSFetchedResultsController?

Slava

> On Oct 6, 2017, at 11:28 PM, Glen Huang via swift-users <swift-users at swift.org> wrote:
> 
> Hi,
> 
> I defined some concrete classes inheriting from a generic class like this:
> 
> class Controller1: NSFetchedResultsController<NSManagedObject> {}
> class Controller2: NSFetchedResultsController<NSManagedObject> {}
> 
> And I assign them a shared delegate, and in the delegate method:
> 
> func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>)
> 
> I want to test the concrete type of controller, doing things differently for Controller1 and Controller2.
> 
> But doing the following gives me a warning: Cast from 'NSFetchedResultsController<NSFetchRequestResult>' to unrelated type 'Controller1’ always fails
> 
> switch controller {
> case is Controller1:
>        // ...
> default:
>        break
> }
> 
> I wonder what’s the correct way to check the concrete type?
> 
> Regards,
> Glen
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users



More information about the swift-users mailing list