2011-07-17 7 views

Odpowiedz

8

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.

+0

Oto, do czego dążyłem, +1 – Nektarios

+0

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

0

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.

0

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).

0

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.

0

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ź)

0

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.

Powiązane problemy