Проблема, с которой я столкнулся, заключается в том, что я не могу присвоить атрибуту подкласса, если я не установил свойство Parent Entity объекта подкласса в сущность абстрактного суперкласса.
В XCode 4.0.2 это свойство родительского объекта, на которое я ссылаюсь:
Чего я не понимаю, так это того, что я думал, что родительский объект предназначен для родительско-дочерних отношений между сущностями, а объектные отношения просто фиксируются определениями класса.
Пример
Объекты A, B и C:
- A является абстрактной сущностью типа A с атрибутами:
- B - это объект типа A без атрибутов
- C - это объект типа A без атрибутов
Классы A, B и C:
@interface A : NSManagedObject {
}
@property (nonatomic, retain) NSString * y;
@property (nonatomic, retain) NSString * z;
@interface B : A {
}
@interface C : A {
}
Проблема
Если я не установил родительский объект для объектов B и C в качестве объекта A, то при попытке:
NSEntityDescription *be = [[mom entitiesByName] objectForKey:@"B"];
B *b = [[NSManagedObject alloc] initWithEntity:be
insertIntoManagedObjectContext:moc];
b.y = @"test"; // <<-- This line causes the following error:
Я получаю:
-[NSManagedObject setY:]: unrecognized selector sent to instance
Если я установил родительский объект, он, кажется, работает, за исключением того, что объект сохраняется в хранилище, кажется, A вместо B.