swift – 协议中的嵌套类型

前端之家收集整理的这篇文章主要介绍了swift – 协议中的嵌套类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可以在协议中声明嵌套类型,如下所示:
protocol nested{

    class nameOfClass {
        var property: String { get set }
    }

}

Xcode表示“类型不允许在这里”,所以,如果我想创建一个需要嵌套类型的协议,这是不可能的,或者我可以这样做吗?

协议不需要嵌套类型,但它可能需要符合另一协议的关联类型.实现可以使用嵌套类型或类型别名来满足此要求.
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
}

猜你在找的Swift相关文章