The views, their view (state, business logic etc) models and the app data models all appear nicely separated, so fwiw the example looks good to me - especially if the full code is working :-)
In terms of MVVM refinement; I've seen it suggested that:
- Putting the view models in an extension of their view is sensible - since they are almost never reused anywhere else and it makes organisation a bit easier.
- Using Protocols to specify model parameters is a good practice as it permits more flexibility, particularly with regards to the use of mock objects during testing.
For more details on the above, Kilo Loco's short YouTube video on the subject is good, it can be found here
Good luck and have fun.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…