NSManagedObjectModel
NSManagedObjectModel
объект описывает схему — набор объектов (модели данных), которые Вы используете в своем приложении.
Модель содержит один или больше NSEntityDescription
объекты, представляющие объекты в схеме. Каждый NSEntityDescription
объект имеет объекты описания свойства (экземпляры подклассов NSPropertyDescription
) это представляет свойства (или поля) объекта в схеме. Базовая платформа Данных использует это описание несколькими способами:
Ограничение создания UI в Интерфейсном Разработчике
Во время выполнения проверка атрибута и отношения оценивает
Отображение между управляемыми объектами и базой данных или основанной на файле схемой для объектной персистентности.
Модель управляемого объекта поддерживает отображение между каждым из его объектов объекта и соответствующим классом управляемых объектов для использования с персистентными механизмами хранения в Базовой Платформе Данных. Можно определить объект для определенного управляемого объекта с entity
метод.
Вы обычно создаете модели управляемого объекта с помощью инструмента моделирования данных в XCode, но возможно создать модель программно в случае необходимости.
Загрузка файла модели
Файлы модели управляемого объекта обычно хранятся в проекте или платформе. Для загрузки модели Вы предоставляете URL конструктору. Обратите внимание на то, что загрузка модели не имеет эффекта загрузки всех ее объектов.
Сохраненные запросы выборки
Часто имеет место, что в Вашем приложении Вы хотите овладеть набором объектов та доля функции вместе. Иногда можно определить те функции (значения свойств) заранее; иногда необходимо быть в состоянии предоставить значения во время выполнения. Например, Вы могли бы хотеть быть в состоянии получить все фильмы, принадлежавшие Pixar; альтернативно Вы могли бы хотеть быть в состоянии получить все фильмы, заработавшие больше, чем сумма, указанная пользователем во время выполнения.
Запросы выборки часто предопределяются в модели управляемого объекта как шаблоны. Они позволяют Вам предопределять именованные запросы и их параметры в модели. Обычно они содержат переменные, которыми нужно заменить во время выполнения. NSManagedObjectModel
обеспечивает API для получения сохраненного запроса выборки по имени, и выполнять подстановку переменных — посмотрите fetchRequestTemplateForName:
и fetchRequestFromTemplateWithName:substitutionVariables:
. Можно создать шаблоны запроса выборки программно и связать их с использованием модели setFetchRequestTemplate:forName:
; обычно, однако, Вы определяете их использующий средство проектирования XCode.
Конфигурации
Иногда модель — особенно один в платформе — может использоваться в различных ситуациях, и можно хотеть указать различные наборы объектов, которые будут использоваться в различных ситуациях. Могли бы, например, быть определенные объекты, которые должны только быть доступными, если у пользователя есть административные привилегии. Для поддержки этого требования модель может иметь больше чем одну конфигурацию. Каждую конфигурацию называют и имеет связанный набор объектов. Наборы могут наложиться. Вы устанавливаете конфигурации программно с помощью setEntities:forConfiguration:
или использование средства проектирования XCode, и получает объекты для данного использования имени конфигурации entitiesForConfiguration:
.
Изменение моделей
Так как модель описывает структуру данных в персистентном хранилище, изменяя любые части модели, изменяющейся, схема представляет его несовместимый с (и настолько неспособный открыться) хранилища, которые это ранее создало. При изменении схемы поэтому необходимо переместить данные в существующих хранилищах к новой версии (см. Базовое Руководство по программированию Управления версиями и Миграции данных Модели данных). Например, если Вы добавите новый объект или новый атрибут к существующему объекту, то Вы не будете в состоянии открыть старые хранилища; если Вы добавите ограничение проверки или установите новое значение по умолчанию для атрибута, то Вы будете в состоянии открыть старые хранилища.
Редактирование моделей программно
Модели управляемого объекта доступны для редактирования, пока они не используются менеджером по графу объектов (контекст управляемого объекта или персистентный координатор хранилища). Это позволяет Вам создавать или изменять их динамично. Однако, как только модель используется, она не должна быть изменена. Это осуществляется во время выполнения — когда диспетчер объектов сначала выбирает данные с помощью модели, весь, что модель становится недоступной для редактирования. Любая попытка видоизменить модель или любой из ее подобъектов после той точки заставляет исключение быть брошенным. Если необходимо изменить модель, использующуюся, создайте копию, измените копию, и затем отбросьте объекты со старой моделью.
Быстрое перечисление
В OS X v10.5 и позже и на iOS, NSManagedObjectModel
поддержки NSFastEnumeration
протокол. Можно использовать это для перечисления по объектам модели, как проиллюстрировано в следующем примере:
NSManagedObjectModel *aModel = ...;
for (NSEntityDescription *entity in aModel) {
// entity is each instance of NSEntityDescription in aModel in turn
}
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSFastEnumeration
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSFastEnumeration
-
NSObject
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.4 и позже.
-
Инициализирует получатель с помощью файла модели в указанном URL.
Объявление
Swift
convenience init?(contentsOfURL
url
: NSURL)Objective C
- (instancetype)initWithContentsOfURL:(NSURL *)
url
Параметры
url
Объект URL указание расположения файла модели.
Возвращаемое значение
Модель управляемого объекта инициализировала использование файла в
url
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает модель, создаваемую путем слияния всех моделей, найденных в данных пакетах.
Объявление
Swift
class func mergedModelFromBundles(_
bundles
: [AnyObject]?) -> NSManagedObjectModel?Objective C
+ (NSManagedObjectModel *)mergedModelFromBundles:(NSArray *)
bundles
Параметры
bundles
Массив экземпляров
NSBundle
искать. Если Вы указываетеnil
, тогда основной пакет ищется.Возвращаемое значение
Модель, создаваемая путем слияния всех моделей, найденных в
bundles
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает объединенную модель из указанного массива для получения информации о версии в предоставленных метаданных.
Объявление
Swift
class func mergedModelFromBundles(_
bundles
: [AnyObject]?, forStoreMetadatametadata
: [NSObject : AnyObject]) -> NSManagedObjectModel?Objective C
+ (NSManagedObjectModel *)mergedModelFromBundles:(NSArray *)
bundles
forStoreMetadata:(NSDictionary *)metadata
Параметры
bundles
Массив пакетов.
metadata
Словарь, содержащий информацию о версии от метаданных для персистентного хранилища.
Возвращаемое значение
Модель управляемого объекта раньше создавала хранилище для метаданных. Если модель не может быть создана для соответствия информации о версии, указанной
metadata
, возвратыnil
.Обсуждение
Этот метод является компаньоном к
mergedModelFromBundles:
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Создает единственную модель из массива существующих моделей.
Объявление
Swift
init?(byMergingModels
models
: [AnyObject]?) -> NSManagedObjectModelObjective C
+ (NSManagedObjectModel *)modelByMergingModels:(NSArray *)
models
Параметры
models
Массив экземпляров
NSManagedObjectModel
.Возвращаемое значение
Единственная модель, сделанная путем объединения моделей в
models
.Обсуждение
Вы используете этот метод для объединения многоуровневых моделей (обычно от различных платформ) в одну.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Возвраты, для получения информации о версии в данных метаданных, модель объединилась от данного массива моделей.
Объявление
Swift
init?(byMergingModels
models
: [AnyObject], forStoreMetadatametadata
: [NSObject : AnyObject]) -> NSManagedObjectModelObjective C
+ (NSManagedObjectModel *)modelByMergingModels:(NSArray *)
models
forStoreMetadata:(NSDictionary *)metadata
Параметры
models
Массив экземпляров
NSManagedObjectModel
.metadata
Словарь, содержащий информацию о версии от метаданных для персистентного хранилища.
Возвращаемое значение
Объединенная модель от
models
для получения информации о версии вmetadata
. Если модель не может быть создана для соответствия информации о версии вmetadata
, возвратыnil
.Обсуждение
Это - сопутствующий метод к
mergedModelFromBundles:forStoreMetadata:
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Объекты в получателе.
Обсуждение
Объекты являются экземплярами
NSEntityDescription
.Специальные замечания
Если объектная модель использовалась менеджером по графу объектов, установка объектов для объектной модели повышает исключение.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
entitiesByName entitiesByName
СвойствоОбъекты получателя, включенного по имени. (только для чтения)
Объявление
Swift
var entitiesByName: [NSObject : AnyObject] { get }
Objective C
@property(readonly, copy) NSDictionary *entitiesByName
Обсуждение
Объекты являются экземплярами
NSEntityDescription
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
См. также
– объекты
– entitiesForConfiguration:
– setEntities:forConfiguration:
+ entityForName:inManagedObjectContext:
(NSEntityDescription
) -
конфигурации конфигурации
СвойствоВсе доступные имена конфигурации получателя. (только для чтения)
Объявление
Swift
var configurations: [AnyObject] { get }
Objective C
@property(readonly, strong) NSArray *configurations
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает объекты получателя для указанной конфигурации.
Объявление
Swift
func entitiesForConfiguration(_
configuration
: String?) -> [AnyObject]?Параметры
configuration
Имя конфигурации в получателе.
Возвращаемое значение
Массив, содержащий объекты получателя для конфигурации, указанной
configuration
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Связывает указанные объекты с получателем с помощью данного имени конфигурации.
Объявление
Swift
func setEntities(_
entities
: [AnyObject], forConfigurationconfiguration
: String)Параметры
entities
Массив экземпляров
NSEntityDescription
.configuration
Имя для конфигурации.
Специальные замечания
Если получатель использовался менеджером по графу объектов, этот метод повышает исключение.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Словарь выборки получателя запрашивает шаблоны, включенные по имени. (только для чтения)
Объявление
Swift
var fetchRequestTemplatesByName: [NSObject : AnyObject] { get }
Objective C
@property(readonly, copy) NSDictionary *fetchRequestTemplatesByName
Обсуждение
Если шаблон содержит предикат с переменными замены, необходимо вместо этого использовать
fetchRequestFromTemplateWithName:substitutionVariables:
создать новый запрос выборки.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает запрос выборки с указанным именем.
Объявление
Swift
func fetchRequestTemplateForName(_
name
: String) -> NSFetchRequest?Objective C
- (NSFetchRequest *)fetchRequestTemplateForName:(NSString *)
name
Параметры
name
Строка, содержащая имя выборки, запрашивает шаблон.
Возвращаемое значение
Запрос выборки называют
name
.Обсуждение
Если шаблон содержит переменные замены, необходимо вместо этого использовать
fetchRequestFromTemplateWithName:substitutionVariables:
создать новый запрос выборки.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
fetchRequestFromTemplateWithName (_: substitutionVariables:) - fetchRequestFromTemplateWithName:substitutionVariables:
Возвращает копию шаблона запроса выборки с переменными, которыми заменяют значения из словаря замен.
Объявление
Swift
func fetchRequestFromTemplateWithName(_
name
: String, substitutionVariablesvariables
: [NSObject : AnyObject]) -> NSFetchRequest?Objective C
- (NSFetchRequest *)fetchRequestFromTemplateWithName:(NSString *)
name
substitutionVariables:(NSDictionary *)variables
Параметры
name
Строка, содержащая имя выборки, запрашивает шаблон.
variables
Словарь, содержащий пары ключ/значение, где ключи являются именами переменных, указанных в шаблоне; соответствующими значениями заменяют, прежде чем запрос выборки возвращается. Словарь должен обеспечить значения для всех переменных в шаблоне.
Возвращаемое значение
Копия выборки запрашивает шаблон с переменными, которыми заменяют значения от
variables
.Обсуждение
variables
словарь должен обеспечить значения для всех переменных. Если Вы хотите протестировать на нулевое значение, использовать[NSNull null]
.Этот метод обеспечивает обычный способ связать «абстрактно» определенный шаблон запроса выборки с конкретной выборкой. Для получения дополнительной информации при использовании этого метода, посмотрите Предикаты Создания.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Связывает указанный запрос выборки с получателем с помощью имени.
Объявление
Swift
func setFetchRequestTemplate(_
fetchRequest
: NSFetchRequest?, forNamename
: String)Objective C
- (void)setFetchRequestTemplate:(NSFetchRequest *)
fetchRequest
forName:(NSString *)name
Параметры
fetchRequest
Запрос выборки, обычно содержащий предикаты с переменными для замены.
name
Строка, указывающая имя шаблона запроса выборки.
Обсуждение
Для получения дополнительной информации при использовании этого метода, посмотрите Предикаты Создания.
Специальные замечания
Если получатель использовался менеджером по графу объектов, этот метод повышает исключение.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Словарь локализации получателя.
Объявление
Swift
var localizationDictionary: [NSObject : AnyObject]?
Objective C
@property(strong) NSDictionary *localizationDictionary
Обсуждение
Таблица 1 описывает ключ и образец значения для словаря локализации.
Таблица 1Key и образец значения для словаря локализации. Ключ
Значение
Примечание:
«Entity/NonLocalizedEntityName»
«LocalizedEntityName»
«Property/NonLocalizedPropertyName/Entity/EntityName»
«LocalizedPropertyName»
(1)
«Property/NonLocalizedPropertyName»
«LocalizedPropertyName»
«ErrorString/NonLocalizedErrorString»
«LocalizedErrorString»
(1) Поскольку свойства в различных объектах с тем же нелокализованным именем, но это должно иметь различные локализованные имена.
Специальные замечания
На OS X v10.4,
localizationDictionary
может возвратитьсяnil
пока Базовые Данные лениво не загружают словарь в своих собственных целях (например, сообщая о локализованной ошибке).Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает булево значение, указывающее, совместима ли данная конфигурация в получателе с данными метаданными от персистентного хранилища.
Объявление
Swift
func isConfiguration(_
configuration
: String?, compatibleWithStoreMetadatametadata
: [NSObject : AnyObject]?) -> BoolObjective C
- (BOOL)isConfiguration:(NSString *)
configuration
compatibleWithStoreMetadata:(NSDictionary *)metadata
Параметры
configuration
Имя конфигурации в получателе. Передача
nil
не указать конфигурацию.metadata
Метаданные для персистентного хранилища.
Возвращаемое значение
YES
true
если конфигурация в получателе, указанномconfiguration
совместимо с метаданными хранилища, даннымиmetadata
, иначеNO
false
.Обсуждение
Этот метод сравнивает информацию о версии в метаданных хранилища с версиями объекта данной конфигурации. Для получения информации о конкретных различиях использовать
entityVersionHashesByName
и выполните сравнение объекта объектом.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Словарь версии хеширует для объектов в получателе, включенном именем объекта. (только для чтения)
Объявление
Swift
var entityVersionHashesByName: [NSObject : AnyObject] { get }
Objective C
@property(readonly, copy) NSDictionary *entityVersionHashesByName
Обсуждение
Словарь информации о хеше версии используется Базовыми Данными для определения совместимости схемы.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
versionIdentifiers versionIdentifiers
СвойствоНабор определенных разработчиками идентификаторов версии для получателя.
Объявление
Swift
@NSCopying var versionIdentifiers: NSSet
Objective C
@property(copy) NSSet *versionIdentifiers
Обсуждение
Объединенные модели возвращают объединенный набор идентификаторов. Базовая платформа Данных не дает моделям идентификатор по умолчанию, и при этом она не зависит это значение во время выполнения. Для моделей, создаваемых в XCode, Вы устанавливаете это значение в образцовом инспекторе.
Это значение предназначается, чтобы использоваться в качестве подсказки отладки, чтобы помочь Вам определить модели, объединенные для создания объединенной модели.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.