Действительно ли возможно сделать Базовый атрибут Данных уникальным, т.е. никакие два объекта MyEntity не могут иметь тот же myAttribute?
Я знаю, как осуществить это программно, но я надеюсь, что существует способ сделать это с помощью редактора Модели графических данных в XCode.
Я использую iPhone 3.1.2 SDK.
Я решил использовать validate
, чтобы проверить, существует ли уже управляемый объект с определенным значением <ключ>
. В этом случае возникает ошибка.
Например:
- (BOOL)validateMyAttribute:(id *)value error:(NSError **)error { // Return NO if there is already an object with a myAtribute of value }
Спасибо Мартину Коту за его вклад.
Вы можете переопределить метод setMyAttribute
(используя категории) и прямо здесь обеспечить уникальность, хотя это может быть дорого:
- (void)setMyAttribute:(id)value
{
NSArray *objects = [self fetchObjectsWithMyValueEqualTo:value];
if( [objects count] > 0 ) // ... throw some exception
[self setValue:value forKey:@"myAttribute"];
}
Если вы хотите убедиться, что каждый экземпляр MyEntity
имеет отдельное значение myAttribute
, для этого можно использовать объектный идентификатор objectID
объекта NSManagedObject
иметь значение.