将枚举大小写作为参数传递给Swift 4

时间:2018-10-27 00:29:03

标签: swift parameters enums

所以我正在尝试使用这样的功能构建框架

public func logScreen(screen: SomeEnum){
    print(screen.rawValue)
}

并且我想将使用该框架的项目中定义的字符串枚举的情况作为参数传递

1 个答案:

答案 0 :(得分:0)

我认为您不能直接这样做。但是,我相信使用快速协议可以实现您的目标。您可以查看我的想法。

首先,您需要在框架中定义一个协议。在您的Framework类中说。

public protocol SomeEnum {
    var rawValue: String { get }
}

在框架类中,您定义代码:

public func logScreen(screen: SomeEnum){
    print(screen.rawValue)
}

现在在您的项目中,您可以声明枚举并继承框架  协议。例如在您的项目中:

public enum MyEnum: SomeEnum {
    case test
    case debug

    public var rawValue: String {
        switch self {
        case .test:
            return "test"
        case .debug:
            return "Debug"
        }
    }
}

现在使用您项目中的方法,如下所示:

yourframeworkclass.logScreen(screen: MyEnum.test)