这是我的第一个问题,但我没有找到答案。
我在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"}
,为什么在谓词连接字符串格式中添加引号(“)为我的值?
答案 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];
这对我有用!