Группировка в поиске дисплея контроллера - PullRequest
0 голосов
/ 07 декабря 2011

В моем приложении Core Data у меня есть объект Person с именами в качестве атрибута.Я использовал следующую логику предикатов для поиска имен.Он отображает имена, когда мы ищем по слову.хорошо, но я хочу две группы искомых имен как

  1. Слово, содержащееся в любом месте имени

  2. Имя начинается со слова.

обе группы, которые я хочу.Как?

NSString *searchfilter = [NSString stringWithFormat:@"*%@*",savedSearchTerm_];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"word like[c] %@", searchfilter];
[fetchRequest setPredicate:filter];

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Я думаю, у вас есть 2 варианта здесь:

1) - (id)initWithFetchRequest:(NSFetchRequest *)fetchRequest managedObjectContext:(NSManagedObjectContext *)context sectionNameKeyPath:(NSString *)sectionNameKeyPath cacheName:(NSString *)name передать sectionNameKeyPath: по тому, что вы хотите сгруппировать

2) группу после выбора - (NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error

1 голос
/ 07 декабря 2011

Ваш пример должен работать для # 1.

слово находится где угодно в имени:

NSString *searchfilter = [NSString stringWithFormat:@"*%@*",savedSearchTerm_];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"word like[c] %@", searchfilter];
[fetchRequest setPredicate:filter];

имя начинается со слова:

NSString *searchfilter = [NSString stringWithFormat:@"%@*",savedSearchTerm_];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"word like[c] %@", searchfilter];
[fetchRequest setPredicate:filter];
...