无法注入 属性,找不到 setter 选择器
Can't inject property, setter selector not found
使用 Typhoon 和 Swift,我正在设置我的项目,但遇到了这个问题。我有一个classTPLAddInteractor
这样
class TPLAddInteractor: NSObject, TPLAddInteractorInput {
var output: TPLAddInteractorOutput?
var dataManager: TPLDataManagerInterface?
}
我的程序集是这样的
class TPLAddAssembly: TyphoonAssembly {
var applicationAssembly: TPLApplicationAssembly?
dynamic func addInteractor() -> AnyObject {
return TyphoonDefinition.withClass(TPLAddInteractor.self) {
(definition) in
definition.injectProperty("output", with: self.addPresenter())
definition.injectProperty("dataManager", with: self.applicationAssembly?.dataManager())
}
}
dynamic func addPresenter() -> AnyObject {
return TyphoonDefinition.withClass(TPLAddPresenter.self) {
(definition) in
definition.injectProperty("interactor", with: self.addInteractor())
}
}
}
然后我在 运行 应用后立即收到此错误:
reason: 'Can't inject property 'dataManager' for object '<TPL.TPLAddInteractor: 0x7ff5b2d2bcf0>'. Setter selector not found. Make sure that property exists and writable'
我正在阅读 Typhoon 的 Swift 示例,我没有发现我的代码有任何异常。但我是 Swift 的新手,所以我可能遗漏了一些东西。
谢谢
要使用 Typhoon,Swift 协议必须具有“@objc”指令。这是因为 Typhoon 使用 Objective-C 运行时,因为 Swift 还没有原生动态。
此要求记录在 Swift Quick Start 中。
//Inject as follows it will give a warning but its working for me:
definition?.injectProperty(Selector(("cityInfo")), with: self.coreAssembly.cityInfo())
使用 Typhoon 和 Swift,我正在设置我的项目,但遇到了这个问题。我有一个classTPLAddInteractor
这样
class TPLAddInteractor: NSObject, TPLAddInteractorInput {
var output: TPLAddInteractorOutput?
var dataManager: TPLDataManagerInterface?
}
我的程序集是这样的
class TPLAddAssembly: TyphoonAssembly {
var applicationAssembly: TPLApplicationAssembly?
dynamic func addInteractor() -> AnyObject {
return TyphoonDefinition.withClass(TPLAddInteractor.self) {
(definition) in
definition.injectProperty("output", with: self.addPresenter())
definition.injectProperty("dataManager", with: self.applicationAssembly?.dataManager())
}
}
dynamic func addPresenter() -> AnyObject {
return TyphoonDefinition.withClass(TPLAddPresenter.self) {
(definition) in
definition.injectProperty("interactor", with: self.addInteractor())
}
}
}
然后我在 运行 应用后立即收到此错误:
reason: 'Can't inject property 'dataManager' for object '<TPL.TPLAddInteractor: 0x7ff5b2d2bcf0>'. Setter selector not found. Make sure that property exists and writable'
我正在阅读 Typhoon 的 Swift 示例,我没有发现我的代码有任何异常。但我是 Swift 的新手,所以我可能遗漏了一些东西。
谢谢
要使用 Typhoon,Swift 协议必须具有“@objc”指令。这是因为 Typhoon 使用 Objective-C 运行时,因为 Swift 还没有原生动态。
此要求记录在 Swift Quick Start 中。
//Inject as follows it will give a warning but its working for me:
definition?.injectProperty(Selector(("cityInfo")), with: self.coreAssembly.cityInfo())