Was ich tun werde ist, unsere App in Swift zu modularisieren. Module kommunizieren miteinander über ein Protokoll (Service genannt). Hier ist meine Vermutung:Gibt es eine Möglichkeit, eine Klasse in Swift einem generischen Protokoll anzupassen?
protocol Service {
var provider: Any? { get }
}
struct ServiceProvider<T> {
static func provider() -> Any? {
// compile error here, any workaround?
struct Imp: T {}
return Imp.provider
}
}
/********** Shopping Trolly Module ************/
public protocol ShoppingTrollyService {}
// provide
extension ShoppingTrollyService {
var provider: Any? {
return ShoppingTrollyServiceProvider()
}
}
//this class can not be accessed from other module directly
class ShoppingTrollyServiceProvider: ShoppingTrollyService {}
Dann in anderen Modul:
let x = ServiceProvider<ShoppingTrollyService>.provider()
// then call function provided by ShoppingTrollyService
Aber ich bin auf die Schaffung eines konkreten Beispiel konformen einige Protokoll fest (als Fehler oben). Irgendeine Idee?