0

私はこのカスタムクラスを持っています:

@interface MyModel : NSObject

@property (nonatomic,strong) NSString *id_name;
@property (nonatomic,strong) NSArray *genres;

@end

ジャンル配列は の配列ですNSNumber。別の配列にMyModelオブジェクトを入力します。次に例を示します。

MyModel *m = [[MyModel alloc] init];
m.id_name = @"2345";
m.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:3],[NSNumber numberWithInt:5],nil];

MyModel *m2 = [[MyModel alloc] init];
m2.id_name = @"259";
m2.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],nil];

MyModel *m3 = [[MyModel alloc] init];
m3.id_name = @"25932as";
m3.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],[NSNumber numberWithInt:15],nil];

myArray = [NSArray arrayWithObjects:m,m2,m3,nil];

myArrayここで、ジャンルがこの配列の要素内に含まれるようにフィルタリングしたいと思います。

NSArray *a = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],nil];

そのためmyArray、フィルタリング後、オブジェクトm2とが含まれている必要がありますm3。でこれを行うことはできますNSPredicateか? もしそうなら、どのように?それとも別の方法がありますか?

4

2 に答える 2

1

Martin R はエレガントな回答を提供してくれましたが、私があなたの質問を正しく理解していれば、より単純な述語を使用することもできます。

NSPredicate *allPred = [NSPredicate predicateWithFormat: @"ALL %@ IN genres", a];

NSArray *result = [myArray filteredArrayUsingPredicate: allPred];

この述語は、配列に含まれるすべてのジャンルMyModelを含むを検索します。テスト データの場合、それは IDとを持つ 2 つのオブジェクトになります。a25925932as

于 2013-08-23T22:34:09.133 に答える