1

いくつかの異なるNSStringを含むオブジェクトがあります。このオブジェクトを表示するとき、オブジェクトの別の属性に応じて、1つの文字列または別の文字列を表示します。表示する文字列を決定する関数がオブジェクトに定義されています。したがって、簡単な例として:

@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明らかに、述語内の動作を複製することはできますが、ロジックが2倍になり、おそらくどこかでエラーが発生します。

4

1 に答える 1

0

はい。

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

get補足として、outパラメータを介して値byrefを返す場合を除いて、メソッド名の前にメソッド名を付けないでください。詳細については、ドキュメントを確認してください。

于 2011-02-14T17:19:53.303 に答える