CoreData: как получить объекты подкласса и суперкласса - PullRequest
0 голосов
/ 14 марта 2019

У меня есть супер сущность базовых данных под названием Geography, которая имеет свойства

Geography: NSManagedObject {
         NSString: name,
         NSString: id,
}

это ее подклассы, как показано ниже

State: Geography {
}

MSA: Geography {
}

Territory: Geography {
     NSString: formularyTemplate
}

self.entityName = @"Geography";

- (NSFetchedResultsController *)fetchedResultsController {
    if (_fetchedResultsController == nil && self.entityName && self.filterKey) {
        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:self.entityName];
        fetchRequest.predicate = [self filterPredicate];

        NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:self.filterKey ascending:YES];
        fetchRequest.sortDescriptors = @[sortDescriptor];
        _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:nil cacheName:nil];
    }
    return _fetchedResultsController;
}

я хочу, чтобы предикат получал все географические данные (означает состояние, MSA, Территория), но территории должны быть отфильтрованы на основе определенного идентификатора, я не хочу, чтобы все территории

NSMutableArray *predicates = [NSMutableArray new];

NSPredicate *filterTextPredicate = [NSPredicate predicateWithFormat:@"%K contains[c] %@", self.filterKey, trimmedFilterText];

NSPredicate *territoryPredicate = [NSPredicate predicateWithFormat:@"(formularyTemplate != nil) && formularyTemplate == %@", @"34"];

 [predicates addObject: filterTextPredicate];
 [predicates addObject: territoryPredicate];

 [NSCompoundPredicate andPredicateWithSubpredicates:predicates];

Но это не работает.

...