NSPredicate 用数组搜索逗号分隔值

Posted

技术标签:

【中文标题】NSPredicate 用数组搜索逗号分隔值【英文标题】:NSPredicate search comma separated value with array 【发布时间】:2017-03-06 07:08:52 【问题描述】:

有一个名为 "keyword" 的实体文件,其中包含逗号分隔值,例如 "8275,8276,8277"。现在使用 NSPredicate 搜索关键字匹配 this 并且传递值是 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]];

也不行。知道我哪里做错了。

【问题讨论】:

查看***.com/questions/37919934/… 已经检查过了,但无法获得它如何为“fetchRequest”工作的逻辑 @SantanuDasAdhikary 检查我的答案一次。 【参考方案1】:

您需要从您的predicate 中删除keywords contains[cd] %@,然后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]];

【讨论】:

@SantanuDasAdhikary 欢迎朋友 :)

以上是关于NSPredicate 用数组搜索逗号分隔值的主要内容,如果未能解决你的问题,请参考以下文章

用逗号分隔的字符串转换为逗号分隔的整型数组(前端技巧)

NSPredicate 检查以逗号分隔的一串数字是不是包含数字

如何从数组中返回以逗号分隔的值?

如何使用 NSPredicate 从数组中选择确切的短语?

在逗号分隔值文件中搜索值

在 Spark 中读取最后一列作为值数组的 CSV(并且值在括号内并用逗号分隔)