У меня есть такие протоколы
public protocol IRouter: Requestable, MultipartUploading, Encoder {
}
, где IRouter должен наследовать или соответствовать протоколу Requestable и Encoder
public protocol Requestable {
func asURLRequest() throws -> URLRequest
}
И MultipartUploading - это еще один протокол с реализацией по умолчанию
public protocol MultipartUploading {
func multipartFormData() throws -> Data?
}
public extension MultipartUploading {
func multipartFormData() throws -> Data? { return nil }
}
Затем я добавляю реализацию по умолчанию в Requestable, если это также IRouter
public extension Requestable where Self: IRouter {
func asURLRequest() throws -> URLRequest {
// make url request
}
}
, а также другую реализацию для протокола MultipartUploading
public extension MultipartUploading where Self: IRouter {
func multipartFormData() -> Data? {
// make data to upload
}
}
Но тогда, если я импортирую модуль в приложение target и do
enum Router: IRouter { }
Он не содержит эту реализацию multipartFormData и asUrlRequest, и мне нужно реализовать их снова? как избежать этого и использовать эти реализации по умолчанию. Кажется, если я сделаю это в том же модуле (цели), тогда Router: IRouter не жалуется, но, возможно, это просто Xcode, не обнаруживающий ошибку