основные данные: различия между управляемым объектом и объектами? - PullRequest
4 голосов
/ 02 августа 2011

Я хотел бы понять немного больше Базовых Данных, почему мы «выбираем» и ищем сущности, в то время как сущности находятся «внутри» управляемых объектов? Например:

NSManagedObjectContext *moc = [self managedObjectContext];  
NSEntityDescription *entityDescription =
    [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc];  
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];  
[request setEntity:entityDescription];

также, что содержит постоянное хранилище объектов? если я понял, хранилище постоянных объектов берет данные из файла sqlite, но затем оно немного запутывается, не так ли: одна сущность для одного хранилища постоянных объектов для одних данных внутри файла sqlite?

Спасибо за ваши ответы

Пол

1 Ответ

14 голосов
/ 02 августа 2011

В основном здесь есть 5 компонентов.Координатор постоянного хранилища, контекст управляемого объекта, модель управляемого объекта, объекты и управляемые объекты.Все они работают вместе, чтобы обеспечить систему управления графами объектов (обратите внимание, что базовые данные не ORM, поэтому это помогает не думать об этом таким образом).Ниже приведено описание компонентов и различных других классов в CoreData, которые взаимодействуют с ними

  • NSPersistentStoreCoordinator - Это обрабатывает загрузку данных на диск и с него.Имеет дело с различными магазинами (NSPersistentStore).Включенные типы хранилищ: двоичный, XML и SQLite.Вы можете написать свои собственные магазины (используя классы NSAtomicStore и NSIncrementalStore), например, если у вас есть собственный тип файла (теоретически вы можете написать магазин, чтобы открыть файл Word или Photoshop, если хотите)
  • NSEntityDescription - Сущность можно рассматривать как «класс» управляемого объекта.Он определяет любые атрибуты (NSAttributeDescription), отношения (NSRelationshipDescription) и извлеченные свойства (NSFetchedPropertyDescription), которые должен иметь управляемый объект, а также другие свойства, такие как NSManagedObject подкласс, который следует использовать
  • NSManagedObjectContext - Это "блокнот" в памяти.Это место, где вы запрашиваете объекты (используя NSFetchRequests), создаете объекты, удаляете объекты и т. Д. Вы можете иметь несколько контекстов и выбрасывать их без сохранения, чтобы отменить любые изменения, которые вам больше не нужны.
  • NSManagedObject - Базовый блок Core Data.Это ваши модели объектов, которые содержат ваши данные.Вы устанавливаете атрибуты, отношения и т. Д. Для них.
  • NSManagedObjectModel - Это представляет модель данных для использования с вашими данными, которая обычно определяется в файле .mom, созданном в XCode.Здесь хранятся все сущности.

Это почти все основные данные.Есть несколько других классов для выполнения миграции и слияния

...