连接字符串NSPredicate无法正常工作目标c

时间:2014-05-07 09:11:32

标签: ios objective-c nsstring concatenation nspredicate

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

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

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

其中uniquePropertyKey是具有name属性的NSString,而valuesWithDupes是带有对象的NSArray

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我在我的项目中使用了谓词,比如使用谓词

按类别过滤数组
    NSString *selectedCategory = activity.user_id;

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

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

这对我有用!