我一直致力于开发一个框架,我决定创建自定义枚举来扩展 Error 协议(protocol),以便在遇到域特定错误时向主机应用程序报告。
即
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 没有名为 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)
}
最佳答案
经过很长时间尝试了我能想到的所有小事,甚至沙盒新 repo 中的问题(检查github.com/anuragajwani/framework_pod_enums_test)都无法重现它我结束了重新克隆有问题的存储库并重新应用所有更改并且没有问题。可惜我找不到潜在的问题,但是通过将每个配置设置与沙盒项目进行比较,我放弃了所有匹配的东西。我有预感,它必须与编译器有关,考虑到它有多不稳定,这不足为奇。
关于swift - 无法从框架内访问公共(public)枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855494/