【发布时间】:2016-04-28 08:48:44
【问题描述】:
我有两个框架
首先 - 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-Gloss。它对符合可解码的模型协议进行了扩展,该协议位于 Restofire 框架中。
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 框架中的功能。
【问题讨论】:
-
我认为问题可能出在
where clause。您确定您没有使用某些私有扩展来添加对协议的一致性吗?例如,如果有一个私有扩展使Model符合Decodable,那么where子句将不起作用。尝试公开所有扩展。 -
一切都是公开的
-
你是使用 pod 来添加框架,还是直接将框架拖放到你的项目中?
-
我现在正在使用 Pod。
标签: ios swift swift2 swift-protocols