连接字符串 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
是带有名称属性的NSString
,valuesWithDupes
是带有对象的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 连接两个字符串,即名字和姓氏