Ładowanie modelu danych W niektórych przypadkach nie trzeba pisać żadnego kodu, aby załadować model. Jeśli korzystasz z aplikacji opartej na dokumentach w systemie OS X, NSPersistentDocument zarządza zadaniem znalezienia i załadowania Twojego modelu aplikacji. Jeśli używasz Xcode do tworzenia aplikacji nie dokumentowej, która używa danych podstawowych (dla OS X lub dla iOS), delegat aplikacji zawiera kod do pobrania modelu. Nazwa modelu - reprezentowana przez nazwę pliku używaną do przechowywania go na dysku - nie jest istotna w środowisku wykonawczym. Po załadowaniu modelu przez Core Data, nazwa pliku jest bez znaczenia i nie ma żadnego zastosowania, więc możesz nazwać plik modelu, jak tylko chcesz.
Jeśli chcesz załadować model samodzielnie, istnieją dwa mechanizmy można użyć:
można załadować jeden model z określonego adresu URL, stosując metodę instancji initWithContentsOfURL :. To jest ogólnie preferowana technika. Zazwyczaj aplikacja ma jeden model i przy użyciu tej metody zapewnia ładowanie tylko tego modelu. Można również załadować poszczególne modele za pomocą adresów URL, a następnie ujednolicić je za pomocą modelu ModelByMergingModels: przed utworzeniem z nimi koordynatora.
W przypadku, gdy istnieje więcej niż jeden model, a szczególnie w przypadkach, gdy modele reprezentują różne wersje tego samego schematu, wiedząc, który model jest ważny, łączenie modeli z tymi samymi obiektami w czasie wykonywania w pojedynczą kolekcję spowoduje kolizje nazw i błędy). Ta metoda jest również przydatna, jeśli chcesz przechowywać model poza pakietem dla aplikacji, a więc trzeba odwoływać się do niego za pośrednictwem adresu URL systemu plików.
Można utworzyć scalony model z określonej kolekcji pakietów, używając metody class mergedModelFromBundles :. Ta metoda może być przydatna w przypadkach, gdy segregacja modeli nie jest ważna - na przykład, możesz znać swoją aplikację i strukturę, do której one prowadzą, do modeli, które potrzebujesz lub chcesz załadować. Metoda klasy pozwala na łatwe ładowanie wszystkich modeli naraz bez konieczności zastanawiania się, jakie są imiona lub w wyspecjalizowanym kodzie inicjującym, aby zapewnić znalezienie wszystkich modeli.
dostępu i korzystania z zarządzanego Object Model w czasie wykonywania
NSManagedObjectModel *model = <#Get a model#>;
NSFetchRequest *requestTemplate = [[NSFetchRequest alloc] init];
NSEntityDescription *publicationEntity =
[[model entitiesByName] objectForKey:@"Publication"];
[requestTemplate setEntity:publicationEntity];
NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:
@"(mainAuthor.firstName like[cd] $FIRST_NAME) AND \
(mainAuthor.lastName like[cd] $LAST_NAME) AND \
(publicationDate > $DATE)"];
[requestTemplate setPredicate:predicateTemplate];
[model setFetchRequestTemplate:requestTemplate
forName:@"PublicationsForAuthorSinceDate"];
Korzystanie żądania pobierania szablon
NSManagedObjectModel *model = <#Get a model#>;
NSError *error = nil;
NSDictionary *substitutionDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"Fiona", @"FIRST_NAME", @"Verde", @"LAST_NAME",
[NSDate dateWithTimeIntervalSinceNow:-31356000], @"DATE", nil];
NSFetchRequest *fetchRequest =
[model fetchRequestFromTemplateWithName:@"PublicationsForAuthorSinceDate"
substitutionVariables:substitutionDictionary];
NSArray *results =
[aManagedObjectContext executeFetchRequest:fetchRequest error:&error];
dziękuję ... Szukałem przez cały dzień. ale na poważnie jabłko, w przypadku danych podstawowych i ios w ogóle jest po prostu zbyt wiele rzeczy, o których trzeba pisać. – user1297061