У меня есть объект A, подобный следующему:
@interface A : NSManagedObject
{
}
@property (nonatomic, retain) NSString *stringProperty;
У которого есть подобие B:
@interface B : A
{
}
Я хотел бы выполнить выборку на B, используя свойство, хранящееся в A. Примерно так:
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 ответа
Я только что попробовал аналогичный пример в последней версии SDK (4.3), и теперь он работает. Теперь я могу использовать свойства родительских сущностей в предикате для подчиненной сущности.
Вам нужно позвонить superentity
? т.е.
[NSPredicate predicateWithFormat:@"superentity.stringProperty = %@", someString];
Или вы можете получить объект A и setIncludesSubentitles:YES
для своего запроса на выборку.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].