1

我有一个包含几个不同 NSString 的对象。在显示这个对象时,根据对象的另一个属性,我会显示一个或另一个字符串。我在对象中定义了一个函数,负责决定显示哪个字符串。所以,作为一个简单的例子:

@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谓词中的行为,但随后我会在逻辑上加倍,并且可能会导致某个地方出现错误。

4

1 回答 1

0

是的。

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

get附带说明一下,除非您要通过 out 参数返回值 byref ,否则不应在方法名称前加上前缀。查看文档以获取更多信息。

于 2011-02-14T17:19:53.303 回答