使用参数执行操作

时间:2018-04-17 23:04:39

标签: swift swift4

我有这段代码

if let c: NSObject.Type = NSClassFromString(TestProject.ViewController) as? NSObject.Type{
    let c_tmp = c.init()
    c_tmp.perform(Selector(("test")))
}

执行:

@objc public func test(){
    print("This is Test ")
}

它有效。

但是,目前发送一个参数:

if let c: NSObject.Type = NSClassFromString(TestProject.ViewController) as? NSObject.Type{
    let dato:Int=4
    let c_tmp = c.init()
    c_tmp.perform(Selector(("test")), with: dato)
}

@objc public func test(_ dato:Int=0){
        print("This is Test \(dato)")
    }

我收到错误:

  

无法识别的选择器发送到实例0x7fbec8723cf0 2018-04-17   16:59:16.789925-0600 ExcelAgenda [15973:2000202] ***终止应用   由于未被捕获的异常' NSInvalidArgumentException',原因:   ' - [TestProject.ViewController测试]:发送到无法识别的选择器   实例0x7fbec8723cf0'

如何使用参数执行功能?

1 个答案:

答案 0 :(得分:0)

错误的选择器。变化

c_tmp.perform(Selector(("test")), with: dato)

c_tmp.perform(Selector(("test:")), with: dato)