Базовые Данные уникальные атрибуты

Действительно ли возможно сделать Базовый атрибут Данных уникальным, т.е. никакие два объекта MyEntity не могут иметь тот же myAttribute?

Я знаю, как осуществить это программно, но я надеюсь, что существует способ сделать это с помощью редактора Модели графических данных в XCode.

Я использую iPhone 3.1.2 SDK.

35
задан robinjam 10 February 2010 в 19:42
поделиться

2 ответа

Я решил использовать validate : error: , чтобы проверить, существует ли уже управляемый объект с определенным значением <ключ> . В этом случае возникает ошибка.

Например:

- (BOOL)validateMyAttribute:(id *)value error:(NSError **)error {
    // Return NO if there is already an object with a myAtribute of value
}

Спасибо Мартину Коту за его вклад.

12
ответ дан 27 November 2019 в 07:14
поделиться

Вы можете переопределить метод 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 иметь значение.

3
ответ дан 27 November 2019 в 07:14
поделиться