0

オブジェクト プロパティの 1 つが条件を満たすオブジェクトを含む配列からいくつかのオブジェクトを取得したい

C#のように

例 :

NSMutablearray * coursesinfo ;

この配列には 30 を超えるコースが含まれています

course は、そのプロパティの object です。 finalgrade です。

すべてのコースを取得したいwhere final grade < 100

c# のような目的の -c でこれを行うことはできますか? そしてどうやって?

4

2 に答える 2

3

where ステートメントは、ココア/ココア タッチで述語を使用するようなものです。これは、ディレクトリからの画像ファイル名の配列があり、ベースファイル名を探している例です。indexsOfObjectsWithOptions: メソッドは、特定のテストに合格したインデックスのセットを返します。NSEnumerationConcurrent は、並行キューを使用して、複数のコアが存在する場合にそれを利用します。

NSIndexSet *indexSet=[allImageURLs indexesOfObjectsWithOptions:NSEnumerationConcurrent passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    BOOL match=NO;
    NSRange twoXRange=[((NSURL *)obj).absoluteString rangeOfString:@"@2x"];
    NSRange iPhoneRange=[((NSURL *)obj).absoluteString rangeOfString:@"~ipad"];
    if (twoXRange.location==NSNotFound && iPhoneRange.location==NSNotFound) {
        match=YES;
    }
    return  match;
}];

self.imageURLs=[allImageURLs objectsAtIndexes: indexSet];

あなたの特定のケースでは、私は次のことを行います:

NSIndexSet *theSet=[coursesinfo indexesOfObjectsWithOptions:NSEnumerationConcurrent passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    BOOL match=NO;

    if( obj.finalGrade<100 ){
       match=YES;
    }
    return match;
}];

NSArray *courses=[coursesinfo objectsAtIndexes: theSet];

幸運を!

t

于 2012-05-27T03:27:09.443 に答える
0

- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate最も近いのはNSArray のuse関数です。

NSPredicate のドキュメントへのリンク。

于 2012-05-27T01:54:09.607 に答える