Запросить авторизацию для SKCloudeServiceController в среде координатора mvvm - PullRequest
0 голосов
/ 06 мая 2019

Я создал действительно простые приложения перед использованием Model-View-ViewModel и шаблона Coordinator, и я полностью согласен с инверсией управления, которую они обеспечивают, так что это не должно быть вопросом о том, следует ли мне использовать их или что-то еще.

Мой вопрос; где разместить логику для вызова SKCloudServiceController.requestAuthorization((SKCloudServiceAuthorizationStatus) -> Void)?

Когда я в первый раз вызываю код, всплывет контроллер представления предупреждений, запрашивающий у пользователя доступ к музыкальной библиотеке, и я чувствую, что он должен быть частью Координатора. В других случаях я чувствую, что он принадлежит ViewModel, потому что я хочу представить статус пользователю.

Ниже вы найдете мой код, поэтому у вас есть представление о моей структуре.

HomeViewModel.swift

class HomeViewModel {
  init() {
    //..
  }
}

HomeViewController.swift

class HomeViewController: UIViewController {
  private let viewModel: HomeViewModel

  init(viewModel: HomeViewModel) {
    self.viewModel = viewModel
    super.init(nibName: nil, bundle: nil)
  }

  public func bindViewModel() {
    //...
  }
}

HomeCoordinator.swift

class HomeCoordinator {
  private let presenter: UINavigationController

  init(for presenter: UINavigationController) {
    self.presenter = presenter
  }

  func start() {
    let homeViewModel = HomeViewModel()

    let homeViewController = HomeViewController(viewModel: viewModel)
    homeViewController.bindViewModel()

    self.presenter.pushViewController(homeViewController, animated: false)
  }
}

Полный пример того, где и как вы видите, это реализовано, было бы здорово. Я также очень заинтересован в обсуждении этой темы, но я искал в Google и, похоже, ничего не нашел. В примерах всегда есть царапина на поверхности, которую я чувствую.

Пожалуйста, дайте мне знать, если есть что-нибудь еще, что я могу предоставить.

...