使用具有NSPredicate的选择器

时间:2010-07-13 00:37:41

标签: iphone nspredicate

我有一个包含几个不同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的行为,但之后我会在逻辑上加倍,并可能在某个地方导致错误。

1 个答案:

答案 0 :(得分:0)

NSPredicate *p = [NSPredicate predicateWithFormat:@"getDisplayString = %@", @"foo"];
NSArray *filtered = [arrayOfMyObjects filteredArrayUsingPredicate:p];

作为旁注,除非您要通过out参数返回值byref,否则不应使用get作为方法名称的前缀。查看the documentation了解详情。