gpt4 book ai didi

swift - 根据文本字段中传递的字符串动态执行操作

转载 作者:行者123 更新时间:2023-11-28 07:09:20 26 4
gpt4 key购买 nike

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

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

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

  1. performActionDynamically中将inputTextField.text传递给NSSelectorFromString()获取选择器
  2. 在自身上调用performSelector:withObject:来执行相应的功能

在 swift 中实现相同的行为时,我唯一能想到的是 -

  1. 用名称firstFuncsecondFunc定义两个闭包
  2. 将闭包作为键的值存储在字典中 - 分别为“firstFunc”和“secondFunc”
  3. 根据文本域中的值从字典中获取相应的闭包
  4. 调用获得的闭包

有没有更好的方法来实现预期的行为?请指导。

最佳答案

你可以尝试这样的事情:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com