Mam app z dwóch kontekstach zarządzanego obiektu konfiguracji jak poniżej:Podstawowe dane: Czy konteksty potomne otrzymują stałe identyfikatory obiektów dla nowo wstawionych obiektów?
- nadrzędna kontekstu: NSPrivateQueueConcurrencyType, związanym z przetrwałym sklepie.
- Główny kontekst: NSMainQueueConcurrencyType, element potomny kontekstu nadrzędnego.
Po włożeniu nowej zarządzanego obiektu do głównego kontekście zapisać główny kontekst, a następnie kontekście rodzic tak:
[context performBlockAndWait:^{
NSError * error = nil;
if (![context save: &error]) {
NSLog(@"Core Data save error %@, %@", error, [error userInfo]);
}
}];
[parentContext performBlock:^{
NSError *error = nil;
BOOL result = [parentContext save: &error];
if (! result) {
NSLog(@"Core Data save error in parent context %@, %@", error, [error userInfo]);
}
}];
Moje zrozumienie jest, że gdy zarządzać obiekt jest stworzony, to ma tymczasowy objectID
. Następnie główny kontekst zostaje zapisany i ten obiekt, wraz z jego tymczasowym ID, dostaje się do kontekstu nadrzędnego. Następnie zapisywany jest kontekst nadrzędny. Gdy ten ostatni kontekst zostanie zapisany, tymczasowy objectID
w kontekście nadrzędnym zostanie przekształcony w trwały objectID
.
Więc:
- Czy stały identyfikator obiektu kiedykolwiek propagowane automatycznie z powrotem do głównego (dziecko) kontekście?
- Kiedy zmusić, aby uzyskać obiekt stały identyfikator z
[NSManagedObjectContext obtainPermanentIDsForObjects:error:]
, potem tle aplikację, reaktywować, przeładować, uzyskać obiektu przy głównym kontekst użytkownikaobjectWithID:
, a dostęp do właściwości, mam„CoreData mógł nie spełnia winy za ... ".
Jorge: Dostaję CoreData nie może spełnić błędu, gdy uzyskuję stały identyfikator w kontekście podrzędnym i zapisuję obiekt ManagedObject. Czy dowiedziałeś się, z jakiego powodu? Dzięki –