Swift responds(to:) NSSelectorF
2022-05-30 本文已影响0人
生命不止运动不息
Swift中 NSSelectorFromString #selector 使用
现有如下类,想动态调用方法modelWithDic
class KJSpecialCategoryModel: NSObject {
var categoryId: String?
var name: String?
@objc static func modelWithDic(_ dic: [String: Any]?) -> KJSpecialCategoryModel? {
Selector
if let d = dic {
let m = KJSpecialCategoryModel()
m.name = String.formatObject(obj: d["groupName"])
m.categoryId = String.formatObject(obj: d["id"])
return m
}
return nil
}
}
使用示例
self.responds(to: NSSelectorFromString("modelWithDic:"))
self.responds(to: #selector(modelWithDic(_:)))
注意
NSSelectorFromString 和 #selector 所传的函数参数写法是不同的,一个带_,一个不带(OC的类不需要带),但是冒号必须带。
下面是我犯的错误
之前我的写法是 NSSelectorFromString("modelWithDic(_:)") 然后,怎么也调用不到,才明白写错了
参考文章:
https://a1049145827.github.io/2018/03/13/Swift4-0中使用NSSelectorFromString/