Используя Typhoon и Swift, я настраиваю свой проект, и у меня есть эта проблема. У меня есть класс TPLAddInteractor
этот путьНевозможно ввести свойство, селектор выбора не найден
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'
Читаю Swift пример Typhoon, и я не вижу ничего необычного в своем коде. Но я новичок в Swift, поэтому, возможно, я что-то пропустил.
Благодаря
Ниже я дам подробный ответ, но попытался ли вы пометить динамику var? –
Привет, Джаспер. Если я отмечаю его как динамический, компилятор говорит: «Свойство не может быть помечено как динамическое, потому что его тип не может быть представлен в Objective-C». Но, если я изменяю тип «dataManagwr» с TPLDataManagerInterface на impl (TPLDataManager), и я отметил его как динамический, нет никакой проблемы ... Я думаю, что у меня нет чего-то связанного с Swift: \ – emenegro
You к сожалению, добавить директиву «@objc» в протоколы Swift. Тогда он должен работать. Протокол –