我有两个框架
首先 - Restofire。它有一个带扩展的 ResponseSerializer 协议(protocol)。
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-Gloss。它对符合 Retofire 框架中 Decodable 的模型的协议(protocol)进行了扩展。
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-Gloss 的源文件直接导入项目时,一切都按预期工作,但是当我导入框架时,控件无法达到 Restofire-Gloss 框架中的功能。
最佳答案
也许您应该将扩展标记为公开?
关于ios - 从另一个框架 (Restofire) 扩展 Swift 协议(protocol)时的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909673/