Как организовать и назвать код при работе в MVVM - PullRequest
0 голосов
/ 22 декабря 2018

Я не уверен при разработке своего кода, должен ли я использовать класс 'services' для связывания логики для моей модели представления?

Если у меня есть класс, отвечающий за предоставление моделям представления данных о профиле пользователя и запуск асинхронных вызовов API, я должен поместить это в файл, например ProfileService?

соглашение в Angular - это что-то вроде profile.service.ts - будет ли этот класс называться 'Service'?Или в Swift есть лучший шаблон?

Я пытаюсь использовать свое первое приложение для iOS, используя Swift.Мой опыт работы в веб-интерфейсе, и я стараюсь не распространять привычки, которые не являются лучшими практиками в разработке Swift / iOS.

Примером может быть что-то вроде этого:

class MyProfileService {
    func fetchUserProfile() {
        /*
            Perform some async network call
        */
    }
}

class MyViewModel {
    let profileService: MyProfileService
    init(profileService: MyProfileService) {
        self.profileService = profileService
    }
}

class MyClass {
    let viewModel = MyViewModel(profileService: MyProfileService())
}

1 Ответ

0 голосов
/ 22 декабря 2018

Для MVVM вы можете использовать шаблон Two Way data Binding или Observer-Listener между View и ViewModel. Вы можете обратиться к Шаблон MVVM для справки.

class MyProfileService {
    func fetchUserProfile() {
        /*
            Perform some async network call
        */
    }
}

class MyViewModel {
    var name: Observable<String?> = Observable()

    let profileService: MyProfileService
    init(profileService: MyProfileService) {
        self.profileService = profileService
    }
}

class MyClass {
    let viewModel = MyViewModel(profileService: MyProfileService())

    //observe the change in name property and do your task
    viewModel.observe(for: [viewModel.name]) { [weak self] (_) in
        // perform your task once name property is set
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...