如何快速在对象实例上使用选择器

时间:2018-08-02 00:00:37

标签: ios swift runtime

我们知道string对象具有类似uppercasedlowercasedcapitalise之类的方法。

我想在运行时调用选择器。例如:

let aSelector = Selector("capitalise")

let str = "Good Morning"
//now i want to apply aSelector on str:
let finalString = str.aSelector

我该如何实现? 谢谢。

2 个答案:

答案 0 :(得分:2)

  

我有两个目标的两个常量文件。在这些文件中,我想   定义选择器,例如大写和大写。现在在我的代码中   这是两个目标的共同点,我有一个可以大写的字符串   或大写形式,如果没有其他任何形式。例如:   str.thatSelectorInMyConstantFile

如何使用闭包:

let stringOp = { (str: String) in str.capitalized }

OR

let stringOp = { (str: String) in str.uppercased() }

然后您将使用它:

let str = "hello world"
let finalString = stringOp(str)
print(finalString)

输出:

  
Hello World
  

OR

  
HELLO WORLD
  

答案 1 :(得分:0)

您只能在继承自NSObject的对象上调用选择器,因此您将无法在字符串上使用选择器。

通常,您可以执行以下操作: object.perform(#selector(ViewController.mySelectorMethod))

但是您应该解释一下您要实现的目标-选择器并未以您所描述的方式使用,并且可能有更标准的实现目标。