我在编写正确的 NSPredicate 时遇到了一个非同寻常的问题。我有以下模型结构(仅显示了一个相关模型)
如您所见,有四个 AttributeValue 实体继承自父实体。现在我需要使用谓词执行请求。
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:[NSEntityDescription entityForName:@"Entity" inManagedObjectContext:managedObjectContext];
[request setIncludesPropertyValues:NO];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY attributeValues.value = %@",@"Certain value"];
[request setPredicate:predicate];
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
当然这个请求会导致异常:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath attributeValues.value not found in entity <NSSQLEntity Entity id=11>'
***
因为基础实体确实没有value
属性。有没有办法绕过这种情况?我需要从实体端以这种方式填充数据。