2013-01-11 5 views
7

に一致するオブジェクトを返します。 。 。その中にCircleShape、SquareShape、HexagonalShapeのインスタンスがあります(実際のプロトコルやクラス名ではありません)。 。NSSet使用述語はのは、私はid型<形状></p> <p>のオブジェクトのコレクションが含まれていNSSetを持っているとしましょう与えられたクラス

CircleShapeのすべてのインスタンスを返すために、述語または別の1行のコードを使用することは可能ですか?

答えて

11

あなたは、このようなブロックベースの述語を使用することができます。これは、CircleShapeCircleShapeまたはサブクラスのすべてのインスタンスを返します

NSSet *yourSet = ...; 
NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { 
    return [evaluatedObject isKindOfClass:[CircleShape class]]; 
}]; 
NSSet *filteredSet = [yourSet filteredSetUsingPredicate:pred]; 

を。サブクラスではなくクラスのインスタンスのみを使用する場合はisMemberOfClassを使用してください。

関連する問題

 関連する問題