Na przykład: Załóżmy, że przechwytywam listę nazw i zapisuję ją w NSMutableArray. Czy implementuję metodę faktycznego wywoływania serwera w celu pobrania danych w kontrolerze (UIViewController) lub modelu (obiekt Friends)?Kontroler widoku modelu: czy kontroler lub model pobiera dane z serwera?
Odpowiedz
Jest to decyzja projektowa, która zależy od tego, co próbujesz osiągnąć. Jeśli twój model ma sens tylko w kontekście pojedynczej usługi lub jeśli chcesz, aby twój model zapewniał dostęp do wszystkich danych na serwerze, zbuduj połączenie z serwerem w swoim modelu danych. Może to mieć sens, jeśli na przykład budujesz klienta dla usługi takiej jak Twitter lub Flickr.
Z drugiej strony, jeśli tylko pobierasz plik z serwera i na tym koniec, może to mieć sens w przypadku komunikacji w kontrolerze. Kontrolery są mniej przydatne do wielokrotnego użytku i bardziej dostosowane do konkretnego zachowania aplikacji. Zachowanie szczegółowych informacji o tym, skąd pochodzą dane poza modelem, sprawia, że model jest bardziej przydatny do wielokrotnego użytku. Ułatwia to także testowanie - możesz napisać kod testowy, który odczytuje tylko plik lokalny i przechowuje dane w modelu.
Oto, do czego dążyłem, +1 – Nektarios
To nie powinien być jedyny powód podjęcia decyzji, ale komunikacja między klientem a serwerem w kontrolerze ma także tę zaletę, że nie trzeba wykonywać [powiadomienia] (https) : //developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MVC.html) mechanizm od modelu do kontrolera. – Drux
To dobre pytanie. Myślę, że najlepszym sposobem jest kontroler, ponieważ oddziela model od konieczności obecności drugiego modelu, aby działał poprawnie. Chociaż nie sądzę, żebyś naruszył "właściwy mvc", robiąc to również w modelu.
Myślę, że chcesz umieścić go w modelu. To, co zrobisz, to odczytanie modelu danych, a następnie model zajmie się tym, jak zapełnić się, czy to z wewnętrznego magazynu danych, czy z zewnętrznego (jak serwer).
Jednym ze sposobów jest użycie wzorca repozytorium. Aby to zrobić, należy utworzyć obiekty repozytorium w folderze Model i umieścić w nich wszystkie metody związane z bazą danych. Kontrolery wywołują klasy repozytoriów, aby uzyskać dane. Pozwala to oddzielić rzeczywiste obiekty modelu od metod dostępu do bazy danych.
używam wzorzec MVCS (Model-View-Controller-Store), którą odkrył w książce Aaron Hillegass za "IOS Programming: The Big Nerd Ranch Guide" (http://www.bignerdranch.com/book/ios_programming_the_big_nerd_ranch_guide_rd_edition_)
Sklep jest specjalnie zaprojektowany, aby pobrać dane, niezależnie od tego, czy pochodzą z serwera, lokalnego pliku, utrwalonej kolekcji, bazy danych itp.
Pozwala na tworzenie aplikacji bardzo ewoluujących. Na przykład, możesz zbudować aplikację w oparciu o usługę internetową i dzień, w którym chcesz utrwalić swoje dane, musisz tylko zmodyfikować sklep, bez konieczności modyfikacji pojedynczego wiersza kodu w kontrolerze.
To dużo jak repozytorium Wzoru (http://msdn.microsoft.com/en-us/library/ff649690.aspx) (por BobTurbo za odpowiedź)
ja osobiście dokonać DAO lub klasy pomocnika danych. Bardzo trudno jest podążać za ścisłym MVC w celu C, gdy sprawy stają się bardziej skomplikowane. Jednak wprowadzenie go do modelu lub VC również nie jest złe.
- 1. MVC: Czy model lub kontroler zatwierdza dane wprowadzane przez użytkownika
- 2. MVP (rzutnik widoku modelu) lub MVC (kontroler widoku modelu)
- 3. CakePHP - kontroler bez widoku i modelu
- 4. Kontroler zewnętrzny modelu ng
- 5. Aktualny kontroler widoku z AppDelegate?
- 6. Model-widok kontroler w JavaScript
- 7. Czy istnieje bardzo kontroler lub globalny kontroler w CodeIgniter
- 8. Jak push viewcontroller (kontroler widoku)?
- 9. ASP.net Kontroler MVC nie zwróci widoku
- 10. Jak ustawić kontroler widoku root
- 11. dismissModalViewControllerAnimated nie zwalnia kontroler widoku
- 12. Kontroler nawigacyjny w widoku modalnym
- 13. Obecny kontroler widoku storyboard z delegata aplikacji?
- 14. UIStoryBoard otrzymuje pierwszy kontroler widoku z ApplicationDelegate
- 15. Widok modelu Kontroler Wzór projektu Kod Przykład
- 16. ios: jak odrzucić modalny kontroler widoku, a następnie pop pchnąłem kontroler widoku
- 17. Nawigacja między skrótem klawiszowym Model/Widok/Kontroler?
- 18. kontroler CodeIgniter i model o takiej samej nazwie Collison
- 19. Dziwne ostrzeżenie zwalniające kontroler widoku modalnego
- 20. C# MVC i DateTime w kontroler działania modelu
- 21. Wciśnij inny kontroler widoku w widok UITabBarController.
- 22. swift: pokaż kolejny kontroler widoku po przesunięciu w górę w pierwszym kontroler widoku
- 23. MKMapView awarii aplikacji, gdy kontroler widoku pojawiło
- 24. asp.net MVC częściowy kontroler widoku akcja
- 25. Obróć kontroler widoku storyboardu w Xcode 5
- 26. Jak uzyskać bieżący kontroler widoku w kontrolerze widoku strony
- 27. Kiedy kontroler widoku zostanie zwolniony, czy powinien opróżnić pamięć?
- 28. Kontroler widoku modemu iPad podobny do Mail.app?
- 29. Odrzuć/zaktualizuj kontroler widoku modalnego - pamięć?
- 30. Znajdź kontroler ASP.NET MVC w widoku głównym
Powinien być w modelu. – doNotCheckMyBlog