基于在textfield中传递的字符串动态执行操作

时间:2015-03-17 03:22:30

标签: swift closures

假设我有一个文本字段 - inputTextField和一个带有操作performActionDynamically的UI按钮,在同一个类中我定义了两个功能:1。firstFunc,2。secondFunc ,现在我想实现这种行为:

如果用户输入" firstFunc"在文本字段然后他点击按钮它应该调用firstFunc函数,如果他键入" secondFunc"在文本字段中然后他点击按钮它应该调用secondFunc函数。

在objective-c中,我可以通过以下伪代码轻松实现它:

  1. performActionDynamically inputTextField.text NSSelectorFromString()内通过performSelector:withObject:获取选择器
  2. 在自己上调用firstFunc以执行相应的功能
  3. 我在swift中实现相同行为时唯一能想到的是 -

    1. 定义名称为secondFunc,{{1}}
    2. 的两个闭包
    3. 将闭包存储在字典中作为键的值 - ' firstFunc'和' secondFunc'分别
    4. 根据textfield中的值
    5. 从字典中获取相应的闭包
    6. 调用已获得的结束
    7. 有没有更好的方法来实现预期的行为?请指导。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

if self.respondsToSelector(Selector(selectorString)) {
    NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(0), target: self, selector: Selector(inputTextField.text), userInfo: nil, repeats: false)
}

这是作为回调完成的,因此您必须考虑到这一点。


如果您愿意,可以使用NSThread代替NSTimer:

NSThread.detachNewThreadSelector(Selector(inputTextField.text), toTarget: self, withObject: nil)