2013-05-10 10 views
6

Używam CoreData w mojej aplikacji, ze stałym magazynem typu NSInMemoryStoreType.Czy konieczne jest wywołanie zapisu NSManagedObjectContext: dla magazynów w pamięci?

Czy z tym typem sklepu konieczne jest wywołanie NSManagedObjectContext save:? Czy przekazanie save: do NSManagedObjectContext w rzeczywistości stanowi cokolwiek, co oznacza dla sklepów z pamięcią?

Apple's documentation po prostu stwierdza:

Save:
usiłuje popełnić niezapisanych zmian zarejestrowanych obiektów do ich trwałego magazynu.

Co to właściwie oznacza w kontekście magazynu w pamięci?

+1

+1, bardzo ładne pytanie. Zawsze zapisywałem kontekst, uważając, że wszystkie obiekty wykonane w kontekście zostaną przeniesione do persistentStore i zmniejszą ślad pamięci. – Anupdas

Odpowiedz

3

Nie mogłem znaleźć żadnej dokumentacji, ale jestem pewien, że nadal jest potrzebna.

Core Data ma frontend w pamięci (reprezentowany przez kontekst obiektu zarządzanego) i trwały backend ("sklep"). Trwały backend jest zwykle plikiem, ale może po prostu znajdować się wewnątrz pamięci dla NSInMemoryStoreType.

Aby wszystkie funkcje Core Data zadziałały, obie części muszą zostać oddzielone, a następnie przesuwać z frontendu (zmiany oczekujące) na serwer (trwałe dane) za pomocą operacji save.

Uwaga: istnieje kilka kontekstów obiektów zarządzanych (nakładek) dla tego samego sklepu (backend), a każda z nich ma inne oczekujące zmiany. Uwaga: istnieją różne metody, takie jak hasChanges i NSUndoManager dla każdego kontekstu obiektu zarządzanego. Nadal działa z magazynem w pamięci.

Niektóre informacje również here

1

save: dokonuje sprawdzania poprawności atrybutów i powiązań między relacjami.

Powiązane problemy