将predicateWithFormat中的参数作为parameter passing给谓词
这可能听起来很愚蠢,但这里是要预测的数据:
@interface Person @property NSString *name; @property NSString *phone; @property NSString *address; @end
我得到一个NSPredicate,将通过Person Arraysearch,按名称search。 通常情况下,我会使用它
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
但是,我怎样才能使用键(名称)作为参数? 喜欢
NSString *key = @"name"; NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"%@ contains[c] %@", key, searchText];
predicate1工作正常,但谓词2没有。 当我用lldb进行debugging时,那两个不同:
po [predicate1 predicateFormat] name CONTAINS[c] "Eddie" po [predicate2 predicateFormat] "name" CONTAINS[c] "Eddie"
问题是:我可以使predicate2工作? 我想通过键search(名称)作为参数…如果我可以,怎么样?
从谓词编程指南
当使用
%@
将stringvariablesreplace为格式string时,它们被引号包围。 如果要指定dynamic属性名称,请在格式string中使用%K
所以你的谓词应该是
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"%K contains[c] %@", key, searchText];