从条件objective-c获取NSMutablearray中的对象

时间:2012-05-27 01:40:01

标签: objective-c arrays nsmutablearray

我想从数组中获取一些对象,其中一个对象属性满足条件

喜欢在c#

示例:

NSMutablearray * coursesinfo ;

此数组包含30多个课程

当然是对象的属性是finalgrade

我希望获得所有课程where final grade < 100

我可以在目标-c中执行此操作,如c#?怎么样?

2 个答案:

答案 0 :(得分:3)

where语句就像在cocoa / cocoa touch中使用谓词一样。这是一个例子,我有一个目录中的图像文件名数组,我正在寻找基本文件名。 indicesOfObjectsWithOptions:方法返回一组通过特定测试的Indices。 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];
祝你好运!

答案 1 :(得分:0)

最接近的是NSArray的使用- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate功能。

链接到NSPredicate documentation