zazwyczaj tworzę obiekt dedykowany do zarządzania moim stosu danych Core i pokrewnych przedmiotów i zachowań. Jest to użyteczne, ponieważ istnieje wiele płyt kotła z Core Data, więc mogę utworzyć ogólną klasę menedżera bazy, a następnie użyć podklasy dla każdej aplikacji. Zwykle nazywam to AppNameDataModel.
Wolę ukryć kontekst obiektu zarządzanego wewnątrz obiektu DataModel. Zmusza to inne obiekty w aplikacji do zapytania obiektu DataModel o dostęp do stosu danych podstawowych, co zapewnia dobre hermetyzowanie i bezpieczeństwo.
Zazwyczaj tworzę metody w klasie DataModel w celu zwrócenia pobrań dla podmiotów np.
-(NSFetchRequest *) entityNameFetch;
... a następnie użyj metody performFetch
w DataModelu. W użyciu kontroler prosi o pobranie dla jednostki, konfiguruje pobieranie, a następnie prosi DataModel o wykonanie pobierania i zwrócenie wyników. Można skryptować generację metod, które zwracają pobranie, a pobranie wykonania jest również płytą kotła. To wszystko oszczędza dużo czasu, zwłaszcza podczas tworzenia prototypów.
Odwołanie do samej instancji DataModel można przekazać z kontrolera do kontrolera, ale myślę, że jest to poprawne użycie wzorca singleton, więc często robię model danych singleton i dostarczam kategorię na UIViewController dla właściwości, aby uzyskać do niej dostęp .Oznacza to, że każdy kontroler widoku dodany do projektu automatycznie ma dostęp do modułu DataModel.
Ten wzór zachowuje wszystko ładnie zamknięte i modułowe. Ułatwia dodawanie nowych widoków lub udostępnianie modelu danych między projektami. Wykonanie początkowo zajmuje trochę pracy, ale gdy już masz klasę podstawową, przyszłe użycie znacznie przyspieszy.
Dzięki BoltClock, nie wiedziałem o tej funkcji! –
możliwy duplikat [Gdzie umieścić "Stos danych podstawowych" w aplikacji Cocoa/Cocoa Touch] (http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in -kontakt z kakao-dotykiem) –