It is possible to have nested types declared inside protocols, like this:
protocol Nested { class NameOfClass { var property: String { get set } } }
Xcode says "Type not allowed here":
Type 'NameOfClass' cannot be nested in protocol 'Nested'
I want to create a protocol that needs to have a nested type. Is this not possible or I can do this in another other way?
A protocol cannot require a nested type, but it can require an associated type that conforms to another protocol. An implementation could use either a nested type or a type alias to meet this requirement.
protocol Inner { var property: String { get set } } protocol Outer { associatedtype Nested: Inner } class MyClass: Outer { struct Nested: Inner { var property: String = "" } } struct NotNested: Inner { var property: String = "" } class MyOtherClass: Outer { typealias Nested = NotNested }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With