0

BodyURLリクエストのボディとして機能するためにエンコードされるクラスを使用するネットワークモジュールを構築しています。Encodable プロトコルに準拠している任意のクラスで初期化したいのですBodyが、私の場合は、URL 要求に必要なすべてを定義するプロトコルである にMyDevice準拠しているクラスです。DeviceEncodableこのMyDeviceクラスは既に という別のクラスから継承していSpecialClassます。したがって、swift では複数のクラスからの継承が許可されていないため、プロトコルにのみ準拠できます。問題は、初期化BodyするDeviceEncodableと、「タイプ 'Body' はプロトコル 'Encodable' に準拠していません」というエラーがDeviceEncodable表示されることです。DeviceEncodable プロパティとして使用する正しい解決策は何ですかBody関数なので、継承する必要なく適切にエンコードされますか? Samble コードは次のとおりです。

    class Body: Encodable {
    let device: DeviceEncodable
    init(_ deviceInfo: DeviceEncodable) {
        self.device = deviceInfo
    }
}

protocol DeviceEncodable: AnyObject, Encodable  {
    var someSpecialProperty: String {get}
}

class MyDevice: SpecialClass, DeviceEncodable {
    var someSpecialProperty: String = "special"
}

class SpecialClass {
    var someOtherProperty: String = "other"
}
4

1 に答える 1