我必须调用类的方法。此方法可能存在或不存在。
我从2个小时开始寻找解决方案。
以下工作没有参数sayHello()
我有课:
class myClass: NSObject {
func say(something:String){
print("I say : \(something)")
}
func sayHello(){
print("Hello")
}
}
第1步:使用参数
从字符串创建选择器let selector = NSSelectorFromString("sayHello" )
let selectorWithParam = NSSelectorFromString("say:" )
第二步:测试方法是否存在
self.bot?.responds(to: selector)// true
self.bot?.responds(to: selectorWithParam) // false
它不能使用参数!
此外,我尝试使用Swift3 #selector
,但我发现无法从字符串中输入方法
答案 0 :(得分:1)
Swift方法
func say(something:String)
作为
映射到Objective-C- (void)sayWithSomething:(NSString * _Nonnull)something;
因此正确的选择器将是
let selectorWithParam = NSSelectorFromString("sayWithSomething:" )
使用#selector
不易出错:
let selectorWithParam = #selector(myClass.say(something:))