一個夫特協議時,我有兩個框架意外行爲延伸從另一框架(Restofire)
首先 - Restofire。它有一個擴展協議ResponseSerializer。
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()
}
}
二 - Restofire光澤。它具有對Restofire框架中符合Decodable的模型的協議的擴展。
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()
}
}
當我Restofire光澤的源文件直接導入項目一切正常,但是當我輸入的框架,那麼控制沒有達到在Restofire光澤框架的功能。
我認爲問題可能是'where子句'。你確定你沒有使用某些私有擴展來添加協議嗎?例如,如果有一個私有擴展使'Model'符合'Decodable',那麼'where'子句將不起作用。儘量讓你的所有擴展公開。 – Sulthan
一切都是公開的 –
您是否使用pod添加框架,或直接將框架拖放到您的項目中? – wj2061