将枚举从一个模块转换为具有相同枚举名称的另一个模块

Mar*_*ski -1 swift

我的项目正在使用框架,框架和项目都使用相同的枚举值。但是,当我将参数从主应用程序传递到模块控制器时,我发现它们并不相同,因此方法是将其转换。我创建扩展:

extension Result {
    init(_ data: Messaging.MessagingResult) {
        switch data {
            case .authenticationFailed:     self = .authenticationFailed
            case .connectionError:          self = .connectionError
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我必须创建将项目枚举带回到模块枚举的函数

 let adaptedConsume = transform(from: self.consume)
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?变换函数应该是什么样子

小智 5

我不知道我是否理解你的问题,但假设你想要做的是将一个枚举的值映射到另一个枚举,你可以使用typealias它来做到这一点。

Swift 使得将类型从 Objective C 映射到 Swift 变得很容易。

类似的东西typealias Result = Messaging.MessagingResult应该有效。

您可以从Swift 文档了解有关 typealis 的更多信息。