假设我有一个文本字段-inputTextField和一个操作performActionDynamically的UI按钮,在同一个类中,我定义了两个函数:1。firstFunc,2。secondFunc,现在我要实现此行为:
如果用户在textfield中键入“firstFunc”,然后点击按钮,它应该调用firstFunc函数;如果用户在textfield中键入“secondFunc”,然后点击按钮,它应该调用secondFunc函数。
在objective-c中,我可以通过以下伪代码轻松实现它:
performActionDynamically内通过inputTextField.text进入NSSelectorFromString()以获得选择器
调用self上的performSelector:withObject:来执行各自的功能
在swift中实现相同的行为时,我唯一能想到的是-
定义两个名为firstFuncsecondFunc的闭包
将闭包作为键的值存储在字典中-“firstFunc”和“secondFunc”
根据textfield中的值从字典中获取相应的闭包
调用获取的闭包
有没有更好的方法来达到预期的行为?请引导。

最佳答案

你可以试试这样的:

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)

关于swift - 根据文本字段中传递的字符串动态执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29090778/

10-10 23:08