Привет, проблема заключается в следующем:Как создать правильный NSPredicate для такого запроса?
У меня есть объекты CoreData, у которых есть заголовок и связь с объектами ключевых слов.
Мне нужен предикат, который поможет мне получить все те объекты, название которых содержит ключевые слова, которые я печатаю. У меня есть код ниже, должен это сделать, но это не делает:
NSArray *keywords = [searchString componentsSeparatedByString:@" "];
NSString *predicateString = @"";
for(NSInteger i = 0; i < [keywords count]; i++) {
if(((NSString*)[keywords objectAtIndex:i]).length != 0) {
if(i==0) {
predicateString = [keywords objectAtIndex:i];
}
else {
predicateString = [predicateString stringByAppendingFormat:@" and keywords.normalizedKeyword contains[cd] %@", [keywords objectAtIndex:i]];
}
}
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"keywords.normalizedKeyword contains[cd] %@",predicateString];
Например, у меня есть объекты с названиями, как это:
1) «Большое Окрашивание тема» 2) «Тема для дети» 3) "автомобили для детей"
моих ключевых слов дб будет содержать:
большой окраски тема для детей автомобили
Как я могу создать предикат поэтому, когда я типа, например:
Тема для
результат будет 2) и 3)
или, если я нахожу:
отличная тема
результат будет 1) и 2)
Любая помощь в получении правильного предиката для достижения этой цели очень высоко ценится. То, что я пытался сделать там, не работает, и у меня нет идей.
Спасибо!
Отливка * НЕ * необходимо. '-objectAtIndex:' возвращает 'id'. 'id' - это все, и все, что делает бросок ненужным и ужасная привычка вступать в Objective-C. –
Ваш цикл 'for' также не нужен. Objective-C имеет быструю переписку, поэтому вы можете переписать ее как 'for (NSString * predicateString в ключевых словах) {' и выполняться с большой логикой. –