【发布时间】:2011-10-02 11:47:25
【问题描述】:
我遇到的问题是,除非我将子类实体的父实体属性设置为抽象超类的实体,否则我无法分配给子类的属性。
在 XCode 4.0.2 中,这是我所指的父实体属性:
我不明白的是,我认为父实体旨在用于实体之间的父子关系,而对象关系只是由类定义捕获。
示例
实体 A、B 和 C:
- A 是 A 类型的抽象实体,具有以下属性:
- y : 字符串
- z:字符串
- 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。
【问题讨论】:
标签: xcode cocoa inheritance core-data subclass