我们知道string
对象具有类似uppercased
,lowercased
,capitalise
之类的方法。
我想在运行时调用选择器。例如:
let aSelector = Selector("capitalise")
let str = "Good Morning"
//now i want to apply aSelector on str:
let finalString = str.aSelector
我该如何实现? 谢谢。
答案 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))
但是您应该解释一下您要实现的目标-选择器并未以您所描述的方式使用,并且可能有更标准的实现目标。