是否可以在NSPredicate中使用父实体的属性来获取NSFetchRequest?

时间:2011-02-10 17:26:27

标签: iphone ios core-data nspredicate

我有一个如下的实体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>'

2 个答案:

答案 0 :(得分:0)

您需要致电superentity吗?即

[NSPredicate predicateWithFormat:@"superentity.stringProperty = %@", someString];

或者您可以为获取请求获取实体A和setIncludesSubentitles:YES

答案 1 :(得分:0)

我刚刚在最新的SDK(4.3)中尝试过类似的例子,它现在可以使用了。我现在可以在子实体的谓词中使用父实体的属性。