Body
URLリクエストのボディとして機能するためにエンコードされるクラスを使用するネットワークモジュールを構築しています。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"
}