无法从框架内访问公共枚举

时间:2017-01-25 15:32:48

标签: swift enums swift3.0.2

我一直致力于开发框架,我决定创建自定义枚举,扩展Error协议,以便在遇到域特定错误时向主机应用程序报告。

public enum MyCustomError: Error {
    case customCase(message: String)
}
来自主机应用程序的

我有一个响应回调,这是另一个带有关联值的枚举

public enum MyCustomResponse {
    case success
    case error(Error)
}

主机应用程序中的表单我尝试通过执行以下操作来访问错误

let responseHandler: (MyCustomResponse) -> Void = { response in

    switch response {
        case .error(let error):
            if case let MyCustomModule.MyCustomError.customCase(theErrorMessage) = error {
                print(theErrorMessage)
            }
    }
}

我得到的是来自编译器的消息,告诉我MyCustomModule has no member named MyCustomError。如果MyCustomModule.松散,则编译器会抱怨Use of unresolved identifier 'MyCustomError'。我正在导入MyCustomModule,而MyCustomError的访问权限级别为public,任何关于如何解决这个问题的想法都会非常感激。

由于

注意:我正在通过cocoapods版本1.1.1和使用Xcode 8.2.1开发我的框架,swift版本3.0.2,支持iOS 8.0及更高版本。

生成的界面

import Foundation 

public enum MyCustomError : Error { 
    case customCase(message: String) 
}

2 个答案:

答案 0 :(得分:0)

经过一段时间尝试我能想到的每件小事,甚至沙盒新回购中的问题(检查github.com/anuragajwani/framework_pod_enums_test),但没有重现它的能力我结束了使用相关问题重新克隆存储库并重新应用所有更改,它没有问题。 Pitty我找不到潜在的问题,但通过比较每个配置设置与沙盒项目的比较,以及完全符合我放弃的一切。我已经预感到它必须与编译器一起使用它会有多么神奇,这并不奇怪。

答案 1 :(得分:-1)

我有完全相同的问题。在我的情况下,我只是在"Build Active Architecture Only" to "No"中设置Build Settings,但问题已经消失。