swift 3中的sning中的参数rectionToselector / pertricector



我必须调用类的方法。该方法是否可能存在。我正在寻找两个小时的解决方案。以下没有参数sayHello()

的工作

我有课:

class myClass: NSObject {
    func say(something:String){
        print("I say : (something)")
    }
    func sayHello(){
        print("Hello")
    }
}

第一步:从带有参数的字符串创建选择器

let selector = NSSelectorFromString("sayHello" ) 
let selectorWithParam = NSSelectorFromString("say:" ) 

第二步:测试该方法是否存在

self.bot?.responds(to: selector)// true
self.bot?.responds(to: selectorWithParam) // false        

它不适用于参数!

在旁边,我尝试了swift3 #selector,但是我找不到从字符串中输入方法

swift方法

func say(something:String)

映射到Objective-C作为

- (void)sayWithSomething:(NSString * _Nonnull)something;

因此,正确的选择器将为

let selectorWithParam = NSSelectorFromString("sayWithSomething:" )

使用#selector较少容易出错:

let selectorWithParam = #selector(myClass.say(something:))

最新更新