连接字符串 NSPredicate 不能正常工作目标 c

Posted

技术标签:

【中文标题】连接字符串 NSPredicate 不能正常工作目标 c【英文标题】:Concatenate string NSPredicate not work correctly objective c 【发布时间】:2014-05-07 09:11:32 【问题描述】:

这是我的第一个问题,但我没有找到答案。

我在 obj-c 中为 ios 平台开发我的应用程序,我在这种模式下初始化了一个 NSPredicate 对象:

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"%@ IN (%@)", uniquePropertyKey, valuesWithDupes];

其中uniquePropertyKey 是带有名称属性的NSStringvaluesWithDupes 是带有对象的NSArray

如果 uniquePropertyKey 值是谓词中的 NAME 我有 "NAME" in "1", "n" 但我想要NAME in "1", "n",为什么在谓词连接字符串格式中在我的值处添加引号(“)?

【问题讨论】:

NSPredicate with dynamic key and value的可能重复 【参考方案1】:

这里的问题是您使用 NSSString stringWithFormat 直接分配给谓词的动态值,并使用 %@ 作为动态替换的替换。对于关键部分,如果您将其设为 %K,这将正常工作。所以,你的谓词是,

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"%K IN (%@)", uniquePropertyKey, valuesWithDupes];

【讨论】:

谢谢!它工作正常!我不知道这种格式:%K。【参考方案2】:

我在我的项目中使用了谓词,例如使用谓词按类别过滤数组

    NSString *selectedCategory = activity.user_id;

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id == %@", selectedCategory];

    NSArray *filteredArray = [self.array_selectedActivities filteredArrayUsingPredicate:predicate];

这对我有用!

【讨论】:

以上是关于连接字符串 NSPredicate 不能正常工作目标 c的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 对象模型数组过滤器在 Swift 4.0 中无法正常工作

如何为 NSPredicate 连接两个字符串,即名字和姓氏

NSPredicate 过滤数组的一部分

核心数据 - NSPredicate 过滤掉工作不正确的空字符串

NSPredicate 不适用于 ios 中的过滤

使用 NSPredicate 搜索 NSArray