-(NSPredicate *) predicateForExactMatch
{
enum typeOfAutocompleteNew toc = [[self class] typeOfAutoComplete];
NSPredicate * predictNameMatch=[NSPredicate predicateWithFormat:@"%K==[cd]%@",NSStringFromSelector(@selector(strNameofPlace)),self.strCurrentKeyword];
NSPredicate * entryTypeNameMatch=[NSPredicate predicateWithFormat:@"%K==[cd]%@",NSStringFromSelector(@selector(strEntry)),@(toc)];
NSPredicate * final = [NSCompoundPredicate andPredicateWithSubpredicates:@[predictNameMatch,entryTypeNameMatch]];
return final;
}
Какой из них лучше?В Core Data, следует ли сначала поставить более ограничительный или менее ограничительный предикат?
NSPredicate * final = [NSCompoundPredicate andPredicateWithSubpredicates:@[predictNameMatch,entryTypeNameMatch]];
или
NSPredicate * final = [NSCompoundPredicate andPredicateWithSubpredicates:@[entryTypeNameMatch,predictNameMatch]];
Здесь predictNameMatch, безусловно, гораздо более ограничительный характер. Максимум 1-2 - точное совпадение. entryTypeNameMatch соответствует 25% данных.
думаю тоже. Мне нужен кто-то, кто может убедиться, а потом объяснить почему. Похоже, что вторичный индекс действительно не работает или что у coredata нет составных индексов. –