我想从数组中获取一些对象,其中一个对象属性满足条件
喜欢在c#
中示例:
NSMutablearray * coursesinfo ;
此数组包含30多个课程
当然是对象的属性是finalgrade
我希望获得所有课程where final grade < 100
我可以在目标-c中执行此操作,如c#?怎么样?
答案 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
功能。