ios - 从另一个框架 (Restofire) 扩展 Swift 协议(protocol)时的意外行为

标签 ios swift swift2 swift-protocols

我有两个框架

首先 - 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/

相关文章:

ios - iAd 插页式广告的奇怪行为

c++ - Objective-C++ 项目中枚举类型参数的问题

ios - 错误 : memory read failed for 0x0 Xcode 7. 3.1

ios - 在堆栈 View 中取消隐藏 subview 导致奇怪的动画

swift - 从哪里开始使用 GKMinmaxStrategist?

arrays - 无法将类型 'Int' 的值转换为预期的参数类型 '@noescape (Int?) throws -> Bool'

iphone - 如何延迟方法的调用,直到其他代码先完成

swift - 具有自定义开始/结束时间的循环 AVPlayer

xcode - 使用 Swift 在 OSX 中委托(delegate)

ios - 如何在 iOS 的核心数据中创建和使用 NSPredicate 查询?