4

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

IE

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

从主机应用程序我有一个响应回调,它是另一个具有关联值的枚举

IE

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

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

IE

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,并且访问级别MyCustomErrorpublic,任何有关如何解决此问题的想法将不胜感激。

谢谢

注意:我正在通过 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) 
}
4

2 回答 2

0

经过很长一段时间尝试了我能想到的所有小事情,甚至将问题沙箱化到新的存储库中(检查 github.com/anuragajwani/framework_pod_enums_test),但无法重现它我结束了重新克隆存储库的问题并重新应用所有更改,它没有问题。Pitty 我找不到潜在的问题,但是通过将每个配置设置与沙盒项目进行比较,以及完全匹配的所有内容,我都放弃了。我有预感,它必须与编译器一起考虑到它的脆弱程度,这不足为奇。

于 2017-01-26T10:57:21.260 回答
-1

我有完全相同的问题。就我而言,我只是设置了"Build Active Architecture Only" to "No"Build Settings问题就消失了。

于 2018-01-31T09:53:25.440 回答