ios - Swift 枚举函数仅适用于枚举的单个案例?

标签 ios swift function enums

我想声明一个只能用于单个特定枚举情况的函数。

例如,我有 CustomTextFieldTypes 枚举。这有以下案例和功能。

enum CustomTextFieldTypes {

    case CardType
    case CardNumber
    case CardExpiryDate
    case CardName
    case CCVNumber

    func inputCardNumber(cardNumber: String!, cardNumberTextField: XCUIElement?) {        
       cardNumberTextField?.typeText(cardNumber)
    }

    func inputCardCCVNumber(cardCCVNumber: String!, cardCCVNumberTextField: XCUIElement?) {        
       cardCCVNumberTextField?.typeText(cardCCVNumber)
    }
}

现在我只想为 CustomTextFieldTypes.CardNumber 调用 inputCardNumber(...) 函数。我可以执行以下操作...

CustomTextFieldTypes.CardNumber.inputCardNumber(...) 

但同时我可以做到这一点......

CustomTextFieldTypes.CardExpiryDate.inputCardNumber(...) or    
CustomTextFieldTypes.CardNumber.inputCardNumber(...) 

我只想为 CardNumber 调用 inputCardNumber(...) 函数。不是来自另一种情况的枚举本身。我如何实现这一点?

在此先感谢您的帮助

编辑 - 这是我正在做的事情的一些背景。我正在编写一个 UI 测试,它将文本输入到文本字段中。我想让输入代码远离我的测试文件,因此我开始使用枚举和枚举函数进行“实验”。我想知道我是否可以为枚举案例明确提供一个函数。从评论来看我不能这样做(我在网上查过但没走多远)。这不是一个糟糕的架构或任何东西,我只是拆分测试代码..

谢谢大家的回复。

最佳答案

您可以对 self 进行切换,以便在某些情况下执行某些代码。这是一个例子:

enum CustomTextFieldTypes {

    case cardType
    case cardNumber
    case cardExpiryDate
    case cardName
    case ccvNumber

    func inputCardNumber(cardNumber: String!, cardNumberTextField: XCUIElement?) {  
        switch self {
        case .cardNumber:
            cardNumberTextField?.typeText(cardNumber)
        default:
            return
        }
    }
}

关于ios - Swift 枚举函数仅适用于枚举的单个案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044657/

相关文章:

ios - 尝试在 Parse 中查询对象

function - 如何在 Golang 中访问另一个包的私有(private)函数?

javascript - 将 javascript 函数转换为 Obj-C 函数

C - 输入 2 个值,返回 2 个值到 MAIN。交换

ios - CAAnimationGroup 可以根据其中的动画自动确定持续时间吗?

ios - 深度复制 UIView subview 到一个 UIView

iphone - 按钮按下动画

ios - 不同屏幕尺寸下的UITableViewCell

swift - 何时使用 IBAction 与 UITapGestureRecognizer?

Swift 协议(protocol)继承和协议(protocol)一致性问题