Ich habe zwei GerüsteUnexpected Verhalten, wenn ein Swift-Protokoll von einem anderen Rahmen (Restofire), die sich
Zuerst - Restofire. Es hat ein Protokoll ResponseSerializer mit Extension.
public protocol ResponseSerializable {
/// The type of object returned in response.
associatedtype Model
/// The `Alamofire.ResponseSerializer`.
var responseSerializer: ResponseSerializer<Model, NSError> { get }
}
extension ResponseSerializable {
/// `CustomJSONResponseSerializer`
public var responseSerializer: ResponseSerializer<Model, NSError> {
return AlamofireUtils.JSONResponseSerializer()
}
}
Second - Restofire-Gloss. Es hat eine Erweiterung für ein Protokoll für Decodable-konforme Modelle im Restofire-Framework.
public extension ResponseSerializable where Model: Decodable {
/// `GLOSSResponseSerializer`
public var responseSerializer: ResponseSerializer<Model, NSError> {
return GlossUtils.GLOSSResponseSerializer()
}
}
public extension ResponseSerializable where Model: CollectionType, Model.Generator.Element: Decodable {
/// `GLOSSResponseSerializer`
public var responseSerializer: ResponseSerializer<Model, NSError> {
return GlossUtils.GLOSSResponseSerializer()
}
}
Wenn ich die Quelldateien von Restofire-Gloss importieren direkt in das Projekt wie erwartet alles funktioniert, aber wenn ich den Rahmen importieren, dann geht die Steuerung nicht die Funktion im Rahmen Restofire-Gloss erreichen.
Ich denke, das Problem könnte die 'Where-Klausel' sein. Sind Sie sicher, dass Sie nicht die Konformität zu den Protokollen mit einer privaten Erweiterung hinzufügen? Zum Beispiel, wenn es eine private Erweiterung gibt, die 'Model' dazu bringt, mit' Decodable' übereinzustimmen, dann wird die 'Where'-Klausel nicht funktionieren. Versuchen Sie, alle Ihre Erweiterungen öffentlich zu machen. – Sulthan
Alles ist öffentlich –
Verwenden Sie Pods, um das Framework hinzuzufügen, oder fügen Sie das Framework direkt in Ihr Projekt ein? – wj2061