NSPredicate поиск через запятую значение с массивом

Имейте поданную сущность под названием "keyword" который содержит значение через запятую, как "8275,8276,8277", Теперь с помощью NSPredicate ищите тех пользователей, чье ключевое слово, совпадающее с этим и передаваемое значение, является NSArray. Попытка получить с помощью (keywords contains[cd] %@) который работает одно значение, не работает для массива.

Предикат такой,

[NSPredicate predicateWithFormat:@"((eventId == %@) AND (keywords contains[cd] %@) AND (attendeeIsVisible == %@))",self.appDelegate.currentEvent.entityId,selectedTagID,[NSNumber numberWithInt:1]]

После печати предиката это похоже на -

eventId == 18230 AND keywords CONTAINS[cd] {"8275", "8276", "8277"} AND attendeeIsVisible == 1

Попытка составить предикат также нравится

NSMutableArray *parr = [NSMutableArray array];
for (id locaArrayObject in selectedTagID) {
   [parr addObject:[NSPredicate predicateWithFormat:@"keywords contains[cd] %@ ",locaArrayObject]];
}

predicate = [NSPredicate predicateWithFormat:@"((eventId == %@) AND (keywords contains[cd] %@) AND (attendeeIsVisible == %@))",self.appDelegate.currentEvent.entityId,selectedTagID,[NSNumber numberWithInt:1]];

NSPredicate *predicateObj = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate, parr]];

Не работает также. Любая идея, где я делаю неправильно.

1 ответ

Решение

Вы должны удалить keywords contains[cd] %@ от твоего predicate затем CompoundPredicate работает для вас.

NSMutableArray *parr = [NSMutableArray array];
for (id locaArrayObject in selectedTagID) {
    [parr addObject:[NSPredicate predicateWithFormat:@"keywords contains[cd] %@ ",locaArrayObject]];
}

NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"((eventId == %@) AND (attendeeIsVisible == %@))",self.appDelegate.currentEvent.entityId,[NSNumber numberWithInt:1]];

NSPredicate *keywordPredicate = [NSCompoundPredicate orPredicateWithSubpredicates: parr];

//Now use below predicate with your array
predicate = [NSCompoundPredicate orPredicateWithSubpredicates: [eventPredicate, keywordPredicate]];
Другие вопросы по тегам