2013-09-08 3 views
0

В основных данных у меня есть три типа объектов. Объект A, субъект B, субъект CОсновные данные executeFetchRequest возвращает NSManagedObject

Сущность A для субъекта A является отношением друг к другу. Объект C для объекта B также является отношением друг к другу.

В другом слове, А и В имеет inRecord поле, которое указывает на один экземпляр Entity C.

Я следующий код

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"EntityA"]; 

    request.predicate = [NSPredicate predicateWithFormat:@"inRecord.title = %@", title]; 
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]; 
    request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

    NSError *error = nil; 
    NSArray *arrayOfEntity = [context executeFetchRequest:request error:&error]; 

Теперь, если я проверю класс arrayOfEntity [0], он скажет, что это класс EntityA. Однако с тем же кодом, если я заменил EntityA на EntityB выше, если я проверю класс arrayOfEntity [0], он не говорит EntityA, вместо этого он говорит, что это класс NSManagedObject.

Почему?

+0

Вы уже проверили в ядре Контроллер модели данных, если для класса «EntityB» установлено значение «EntityB»? –

+0

Вы установили класс сущности в свойства объекта? – serrrgi

+0

Бинго, ребята, вы правы. Спасибо чувак. – huggie

ответ

1

Вы должны установить «класс» объекта в контролере модели базовой модели в подкласс подпрограмм управляемого объекта.

(класс устанавливается автоматически, если вы создать пользовательский класс для объекта с «Редактор -> Создание управляемых Подкласс объекта ...». В меню Xcode)

Смежные вопросы