我有一个包含几个不同NSStrings的对象。显示此对象时,根据对象的另一个属性,我将显示一个或另一个字符串。我在对象中定义了一个函数,负责决定显示哪个字符串。所以,举个简单的例子:
@interface MyObject : NSObject {
NSString* string1;
NSString* string2;
NSString* string3;
int stringNum;
}
-(NSString)getDisplayString {
if(stringNum == 1) {
return string1;
} else if (stringNum == 2) {
return string2;
} else if (stringNum == 3) {
return string3;
}
}
现在,我想创建一个NSPredicate
来搜索这些对象的数组。是否可以创建一个搜索getDisplayString
结果的?显然,我可能会在谓词中复制getDisplayString
的行为,但之后我会在逻辑上加倍,并可能在某个地方导致错误。
答案 0 :(得分:0)
是
NSPredicate *p = [NSPredicate predicateWithFormat:@"getDisplayString = %@", @"foo"];
NSArray *filtered = [arrayOfMyObjects filteredArrayUsingPredicate:p];
作为旁注,除非您要通过out参数返回值byref,否则不应使用get
作为方法名称的前缀。查看the documentation了解详情。