我有一个如下的实体A:
@interface A : NSManagedObject
{
}
@property (nonatomic, retain) NSString *stringProperty;
有这样的子实体B:
@interface B : A
{
}
我想使用存储在A中的属性在B上执行提取。像这样:
NSManagedObjectContext *context = [delegate mainManagedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"B" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"stringProperty = %@", someString];
[request setPredicate:pred];
这可能吗?我目前收到以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath stringProperty not found in entity <NSSQLEntity B id=26>'
答案 0 :(得分:0)
您需要致电superentity
吗?即
[NSPredicate predicateWithFormat:@"superentity.stringProperty = %@", someString];
或者您可以为获取请求获取实体A和setIncludesSubentitles:YES
。
答案 1 :(得分:0)
我刚刚在最新的SDK(4.3)中尝试过类似的例子,它现在可以使用了。我现在可以在子实体的谓词中使用父实体的属性。