У меня есть родительский и дочерний класс и инициализатор в дочернем классе, который принимает некоторые параметры, а затем вызывает super.init() для инициализации свойств из базового класса.Запуск инициализатора тайфуна и вызов super.init()
Поскольку у меня много дочерних классов, я хочу повторно использовать код для ввода параметров, но я не могу понять способ ввода некоторых из членов в определение базового класса, а остальные из них в дочернем классе определение.
Я попытался следующие:
public dynamic func baseManager() -> AnyObject {
return TyphoonDefinition.withClass(BaseManager.self) {
(definition) in
definition.useInitializer("initWithBaseParam1:baseParam2:") {
(initializer) in
initializer.injectParameterWith(self.baseParam1())
initializer.injectParameterWith(self.baseParam2())
}
}
}
public dynamic func authenticationManager() -> AnyObject {
return TyphoonDefinition.withClass(AuthenticationManager.self) {
(definition) in
definition.parent = self.baseManager()
definition.useInitializer("initWithChildParam1:childParam2:baseParam1:baseParam2:") {
(initializer) in
initializer.injectParameterWith(self.childParam1())
initializer.injectParameterWith(self.childParam2())
}
}
}
Но я получаю сообщение об ошибке, что я использую инициализатор с 4-мя параметрами, но только впрыснуть 2 из них. Есть ли способ, которым я могу выполнить эту работу, или мне нужно реорганизовать базовые параметры как свойства в документах?
Спасибо. Немного о боковом вопросе - вы хотите добавить эту функциональность в более новые версии фреймворка? –
В настоящее время он не находится в нашем отставании, но вы можете его запросить. –