наиболее эффективный способ поиска с использованием оператора NSPredicate OR

Я пытался создать предикат в предыдущем посте, но в итоге сделал это так, потому что через 3 часа я не смог заставить его работать.

Я чувствую, что должен быть более эффективный способ, а также мне нужно, чтобы предикаты были без учета регистра.

10000 автомобилей У меня есть шина, колесо, сиденье как три части автомобиля. Я хочу найти все автомобили, у которых есть шина. Затем я хочу найти все автомобили, которые имеют колесо. Затем я хочу найти все автомобили, которые имеют место. (Я знаю, что многие будут дубликатами, но это то, что мне нужно)

Пожалуйста, дайте мне знать, если есть более эффективный способ. Также, пожалуйста, дайте мне знать, как сделать предикаты нечувствительными к регистру.

Заранее спасибо!

-(NSArray*) loadCarsFromCoreData:(NSMutableArray*)inputCarParts{

    NSMutableArray *totalResults=[[NSMutableArray alloc]init];
    NSFetchRequest *fetchRequest =[[NSFetchRequest alloc]init];

    //To find the cars we are using the car parts
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"CarParts" inManagedObjectContext:[self managedObjectContext]];
    [fetchRequest setEntity:entity];
    NSError *error;
    NSMutableArray *predicates =[self parseCarPartsIntoAPredicateArray:inputCarParts];
    for (int i=0; i<[predicates count]; i++) {
        [fetchRequest setPredicate:[predicates objectAtIndex:i]];

        NSArray *records = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
        NSLog(@"results = %i",[records count]);
        [totalResults addObjectsFromArray:records];
    }
    NSLog(@"results = %i",[totalResults count]);
    return [NSArray arrayWithArray:totalResults];
}

-(NSMutableArray*)parseCarPartsIntoAPredicateArray:(NSMutableArray*)inputCarParts{
    NSMutableArray *returnArray=[[NSMutableArray alloc]init];
    for (int i=0; i<[inputCarParts count]; i++) {
        NSPredicate *predicate=[NSPredicate predicateWithFormat:@"partName == %@",[inputCarParts objectAtIndex:i]];
        [returnArray addObject:predicate];
    }

    return returnArray;
}

Ответы на вопрос(2)

Ваш ответ на вопрос