Передайте регистр перечисления как параметр в swift 4 - PullRequest
0 голосов
/ 27 октября 2018

Итак, я пытаюсь создать фреймворк с такой функцией

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

и я хочу передать в качестве параметра регистр строкового перечисления, определенного в проекте, который будет использовать эту платформу

1 Ответ

0 голосов
/ 27 октября 2018

Я не думаю, что вы можете сделать это напрямую.Но используя быстрый протокол, вы можете достичь своей цели, я верю.Вы можете рассмотреть мою идею.

Во-первых, вам нужно определить протокол в вашей структуре.Скажем, в вашем классе Framework.

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

Внутри вашего класса Framework вы определяете свой код:

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

Теперь в вашем проекте вы можете объявить enum и наследовать протокол Framework.Скажем, например, в вашем проекте:

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)  
...