У меня есть 3 класса: MyProfileVC, NewProfileVC и NewProfileViewModel.
Для облегчения написания тестов я решил создать инициализаторы в моих последних 2 классах, например:
NewProfileViewController:
var user: Users
var viewModel: NewProfileViewModel
init(for user: Users, with coreDataStack: CoreDataStack) {
self.user = user
self.viewModel = NewProfileViewModel(for: user, with: coreDataStack)
super.init(nibName: nil, bundle: nil)
}
где NewProfileViewModel
имеет свой собственный init:
var user: Users
var coreDataStack: CoreDataStack
init(for user: Users, with coreDataStack: CoreDataStack) {
self.user = user
self.coreDataStack = coreDataStack
}
И в конце я пытаюсь инициализировать их обоих как цепочку из MyProfileViewController
как:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toNewProfile" {
var viewController = segue.destination as! NewProfileViewController
viewController = NewProfileViewController(for: sender as? Users ?? Users(context: coreDataStack.mainContext), with: coreDataStack)
}
}
Так что это инициализирует мой NewProfileVC
и NewProfileVC
будет инициализировать NewProfileViewModel
.
Но я хочу спросить разработчиков с более высоким опытом, чем у меня, является ли хорошей практикой инициализация VC внутри prepare: for segue
таким образом, что я только что сделал, или вы можете дать мне лучшие идеи?
Я не хочу писать код, который просто работает, но хочу построить хорошую архитектуру, и у меня нет ни одного наставника, чтобы спросить его об этом, поэтому единственное место - это стек, и я надеюсь, что вы мне поможете.
Заранее спасибо!