NSEntityDescription
NSEntityDescription объект описывает объект в Базовых Данных. Объекты к управляемым объектам что Class к id, или — для использования аналогии базы данных — что таблицы к строкам. Экземпляр указывает имя объекта, его свойства (его атрибуты и отношения, выраженные экземплярами NSAttributeDescription и NSRelationshipDescription) и класс, которым это представлено.
NSEntityDescription объект связан с определенным классом, экземпляры которого используются для представления записей в персистентном хранилище в приложениях с помощью Базовой Платформы Данных. Минимально, описание объекта должно иметь:
Имя
Имя класса управляемых объектов
(Если объект не имеет никакого имени класса управляемых объектов, он принимает значение по умолчанию к
NSManagedObject.)
Вы обычно определяете объекты в управляемом объекте modelusing инструмент моделирования данных в XCode. NSEntityDescription объекты прежде всего используются Базовой Платформой Данных для отображения записей в персистентном хранилище к управляемым объектам в приложении. Вы вряд ли будете взаимодействовать с ними непосредственно, если Вы не будете в частности работать с моделями. Как другие главные классы моделирования, NSEntityDescription предоставляет Вам пользовательский словарь, в котором можно хранить любую специализированную информацию, связанную с объектом.
Редактирование описаний объекта
Описания объекта доступны для редактирования, пока они не используются менеджером по графу объектов. Это позволяет Вам создавать или изменять их динамично. Однако, как только описание используется (когда модель управляемого объекта, которой оно принадлежит, связана с персистентным координатором хранилища), оно не должно (действительно не может) быть измененным. Во время выполнения это осуществляется: любая попытка видоизменить модель или любой из ее подобъектов после модели связана с персистентными причинами координатора хранилища исключение, которое будет брошено. Если необходимо изменить модель, использующуюся, создайте копию, измените копию, и затем отбросьте объекты со старой моделью.
Если Вы хотите создать иерархию объекта, необходимо рассмотреть соответствующий API. Можно только установить подобъекты объекта (см. subentities), Вы не можете установить суперобъект объекта непосредственно. Для установки суперобъекта для данного объекта необходимо поэтому установить массив подобъектов на том супер объекте и включать текущий объект в тот массив. Так, иерархия объекта должна быть создана сверху вниз.
Используя описания объекта в словарях
NSEntityDescription copy метод возвращает объект, таким образом что
[[entity copy] isEqual:entity] == NO
С тех пор NSDictionary копирует его ключи и требует, чтобы ключи оба соответствовали NSCopying протокол и имеет свойство это copy возвращает объект для который [[object copy] isEqual:object] истина, Вы не должны использовать объекты в качестве ключей в словаре. Вместо этого необходимо или использовать имя объекта в качестве ключа или использовать таблицу карты (NSMapTable) с сохраняют обратные вызовы.
Быстрое перечисление
NSEntityDescription поддержки NSFastEnumeration протокол. Можно использовать это для перечисления по свойствам объекта, как проиллюстрировано в следующем примере:
NSEntityDescription *anEntity = ...;for (NSPropertyDescription *property in anEntity) {// property is each instance of NSPropertyDescription in anEntity in turn}
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSFastEnumeration -
NSObjectProtocol -
Печатаемый -
NSCoding -
NSCopying -
NSFastEnumeration -
NSObject
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.4 и позже.
-
Имя объекта получателя.
Специальные замечания
Если модель получателя использовалась менеджером по графу объектов, установка имени повышает исключение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
managedObjectModel managedObjectModelСвойствоМодель управляемого объекта, с которой связан получатель. (только для чтения)
Объявление
Swift
unowned(unsafe) var managedObjectModel: NSManagedObjectModel { get }Objective C
@property(readonly, assign) NSManagedObjectModel *managedObjectModelОператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
См. также
setEntities:(NSManagedObjectModel)setEntities:forConfiguration:: (NSManagedObjectModel) -
Имя класса, представляющего объект получателя.
Объявление
Swift
var managedObjectClassName: StringObjective C
@property(copy) NSString *managedObjectClassNameОбсуждение
Класс, указанный
nameдолженNSManagedObjectили подклассNSManagedObject.Специальные замечания
Если модель получателя использовалась менеджером по графу объектов, установка имени класса повышает исключение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
renamingIdentifier renamingIdentifierСвойствоИдентификатор переименования для получателя.
Объявление
Swift
var renamingIdentifier: StringObjective C
@property(copy) NSString *renamingIdentifierОбсуждение
Идентификатор переименования используется для разрешения конфликтов имен между моделями. Когда создание отображающейся модели между двумя моделями управляемого объекта, исходным объектом и целевым объектом, совместно использующими тот же идентификатор, указывает, что отображение объекта должно быть сконфигурировано для миграции от источника до места назначения.
Если Вы не установите это значение, то идентификатор возвратит имя объекта.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.6 и позже.
-
краткий обзор краткий обзорСвойствоБулево значение, указывающее, представляет ли получатель абстрактный объект.
Объявление
Swift
var abstract: BoolObjective C
@property(getter=isAbstract) BOOL abstractВозвращаемое значение
YEStrueесли получатель представляет абстрактный объект, иначеNOfalse.Обсуждение
YEStrueесли получатель представляет абстрактный объект, иначеNOfalse. Абстрактный объект мог бы быть Формой, с конкретными подобъектами, такими как Прямоугольник, Треугольник и Круг.Специальные замечания
Установка, является ли объект абстрактными повышениями исключение, если модель получателя использовалась менеджером по графу объектов.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.10 и позже.
-
Пользовательский информационный словарь получателя.
Объявление
Swift
var userInfo: [NSObject : AnyObject]?Objective C
@property(nonatomic, strong) NSDictionary *userInfoСпециальные замечания
Если модель получателя использовалась менеджером по графу объектов, установка пользовательского информационного словаря повышает исключение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
subentitiesByName subentitiesByNameСвойствоСловарь, содержащий подобъекты получателя. (только для чтения)
Объявление
Swift
var subentitiesByName: [NSObject : AnyObject] { get }Objective C
@property(readonly, copy) NSDictionary *subentitiesByNameВозвращаемое значение
Ключи в словаре являются именами подобъекта, соответствующие значения являются экземплярами
NSEntityDescription.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
См. также
-
подобъекты подобъектыСвойствоМассив, содержащий подобъекты получателя.
Обсуждение
Подобъекты являются экземплярами
NSEntityDescription.Специальные замечания
Если модель получателя использовалась менеджером по графу объектов, установка подобъектов повышает исключение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
См. также
-
суперобъект суперобъектСвойствоСуперобъект получателя. (только для чтения)
Объявление
Swift
unowned(unsafe) var superentity: NSEntityDescription? { get }Objective C
@property(readonly, assign) NSEntityDescription *superentityОбсуждение
Если получатель не имеет никакого суперобъекта, возвратов
nil.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Возвращает булево значение, указывающее, является ли получатель подобъектом другого данного объекта.
Объявление
Swift
func isKindOfEntity(_entity: NSEntityDescription) -> BoolObjective C
- (BOOL)isKindOfEntity:(NSEntityDescription *)entityПараметры
entityОбъект.
Возвращаемое значение
YEStrueесли получатель является подобъектомentity, иначеNOfalse.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.5 и позже.
-
propertiesByName propertiesByNameСвойствоСловарь, содержащий свойства получателя. (только для чтения)
Объявление
Swift
var propertiesByName: [NSObject : AnyObject] { get }Objective C
@property(readonly, copy) NSDictionary *propertiesByNameОбсуждение
Ключи в словаре являются именами свойства, и значения являются экземплярами
NSAttributeDescriptionи/илиNSRelationshipDescription.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
Массив, содержащий свойства получателя.
Обсуждение
Элементы в массиве являются экземплярами
NSAttributeDescription,NSRelationshipDescription, и/илиNSFetchedPropertyDescription.Специальные замечания
Если модель получателя использовалась менеджером по графу объектов, установка свойств повышает исключение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
attributesByName attributesByNameСвойствоАтрибуты получателя в словаре. (только для чтения)
Объявление
Swift
var attributesByName: [NSObject : AnyObject] { get }Objective C
@property(readonly, copy) NSDictionary *attributesByNameОбсуждение
Ключи в словаре являются названиями атрибута, и значения являются экземплярами
NSAttributeDescription. .Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
relationshipsByName relationshipsByNameСвойствоОтношения получателя в словаре. (только для чтения)
Объявление
Swift
var relationshipsByName: [NSObject : AnyObject] { get }Objective C
@property(readonly, copy) NSDictionary *relationshipsByNameОбсуждение
Ключи в словаре являются именами отношения, и значения являются экземплярами
NSRelationshipDescription.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает массив, содержащий отношения получателя, где описание объекта отношения является данным объектом.
Объявление
Swift
func relationshipsWithDestinationEntity(_entity: NSEntityDescription) -> [AnyObject]Objective C
- (NSArray *)relationshipsWithDestinationEntity:(NSEntityDescription *)entityПараметры
entityОписание объекта.
Возвращаемое значение
Массив, содержащий отношения получателя, где описание объекта отношения
entity. Элементы в массиве являются экземплярамиNSRelationshipDescription.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает объект с указанным именем от модели управляемого объекта, связанной с персистентным координатором хранилища контекста указанного управляемого объекта.
Объявление
Swift
class func entityForName(_entityName: String, inManagedObjectContextcontext: NSManagedObjectContext) -> NSEntityDescription?Objective C
+ (NSEntityDescription *)entityForName:(NSString *)entityNameinManagedObjectContext:(NSManagedObjectContext *)contextПараметры
entityNameИмя объекта.
contextКонтекст управляемого объекта для использования. Не должен быть
nil.Возвращаемое значение
Объект с указанным именем от модели управляемого объекта связался с
contextперсистентный координатор хранилища.Обсуждение
Повышения
NSInternalInconsistencyExceptionеслиcontextnil.Этот метод функционально эквивалентен следующему примеру кода.
NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel];NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:entityName];return entity;
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
См. также
-
insertNewObjectForEntityForName (_: inManagedObjectContext:) + insertNewObjectForEntityForName:inManagedObjectContext:Создает, конфигурирует и возвращает экземпляр класса для объекта с именем.
Объявление
Swift
class func insertNewObjectForEntityForName(_entityName: String, inManagedObjectContextcontext: NSManagedObjectContext) -> AnyObjectObjective C
+ (id)insertNewObjectForEntityForName:(NSString *)entityNameinManagedObjectContext:(NSManagedObjectContext *)contextПараметры
entityNameИмя объекта.
contextКонтекст управляемого объекта для использования.
Возвращаемое значение
Новое, автовыпущенный, полностью сконфигурированный экземпляр класса для объекта называют
entityName. Экземпляру установили его описание объекта и вставляется это вcontext.Обсуждение
Этот метод упрощает для Вас создавать экземпляры данного объекта, не волнуясь о подробных данных создания управляемого объекта. Метод концептуально подобен следующему примеру кода.
NSManagedObjectModel *managedObjectModel =[[context persistentStoreCoordinator] managedObjectModel];NSEntityDescription *entity =[[managedObjectModel entitiesByName] objectForKey:entityName];NSManagedObject *newObject = [[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:context];return newObject;
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.4 и позже.
-
versionHash versionHashСвойствоХеш версии для получателя. (только для чтения)
Объявление
Swift
@NSCopying var versionHash: NSData { get }Objective C
@property(readonly, copy) NSData *versionHashОбсуждение
Хеш версии используется для однозначного определения объекта на основе набора и конфигурации свойств для объекта. Хеш версии использует только значения, влияющие на персистентность данных и определяемого пользователем
versionHashModifierзначение. (Значения, влияющие на персистентность: имя объекта, хеш версии суперобъекта (если есть), если объект абстрактен, и все хеши версии для свойств.) Это значение сохранено как часть информации о версии в метаданных для хранилищ, использующих этот объект, а также определение объекта, вовлеченного вNSEntityMappingобъект.Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.5 и позже.
См. также
-
versionHashModifier versionHashModifierСвойствоМодификатор хеша версии для получателя.
Объявление
Swift
var versionHashModifier: String?Objective C
@property(copy) NSString *versionHashModifierОбсуждение
Это значение включено в хеш версии для объекта. Вы используете его, чтобы отметить или обозначить объект, как являющийся различной «версией», чем другой, даже если все значения, влияющие на персистентность, равны. (Такое различие важно в случаях, где, например, структура объекта неизменна, но изменились формат или содержание данных.)
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвращает копию получателя
Объявление
Objective C
- (id)copyВозвращаемое значение
Копия получателя.
Специальные замечания
NSEntityDescription’ s реализацияcopyвозвращает объект, таким образом что:[[entity copy] isEqual:entity] == NO
Вы не должны, поэтому, использовать объект в качестве ключа в словаре (см. Используя Описания Объекта в Словарях).
-
compoundIndexes compoundIndexesСвойствоСоставной объект индексирует для объекта как массив массивов.
Объявление
Swift
var compoundIndexes: [AnyObject]?Objective C
@property(strong) NSArray *compoundIndexesОбсуждение
Массивы, содержавшиеся в возвращенном массиве, содержат экземпляры
NSAttributeDescription,NSRelationshipDescriptionэто представляет свойства объекта, илиNSStringто соответствие имя атрибутов или отношения объекта.Составные индексы только используются хранилищами, исходно поддерживающими составные индексы — установка их является только консультацией. Индексы применяются ко всей иерархии наследования.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.7 и позже.
