我有一个名为myObjectArray的NSMutableArray
,其中包含名为myObject的NSObjects
数组。 myObject有两个字段(元素?),它们是NSString
。像这样:
@interface myObject : NSObject {
NSString * string1;
NSString * string2;
}
我有一个NSMutableArray
,其中包含大约50个这些对象,所有对象都有不同的string1和string2。然后我有一个独立的NSString
变量,叫做otherString;
是否有一种从myObjectArray访问myObject的快速方法,其string1与otherString匹配?
我应该说,这就是我所拥有的,但我想知道是否有更快的方法:
-(void) matchString: {
NSString * testString = otherString;
for(int i=0; i<[myObjectArray count];i++){
myObject * tempobject = [myObjectArray objectAtIndex:i];
NSString * tempString = tempobject.string1;
if ([testString isEqualToString:tempString]) {
// do whatever
}
}
}
答案 0 :(得分:2)
有几种方法可以做到这一点,
使用谓词
NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"string1 MATCHES[cd] %@", otherString];
NSArray * filteredArray = [myObjectArray filteredArrayUsingPredicate:filterPredicate];
现在filteredArray
包含myObject
匹配string1
的所有otherString
个实例。
NSUInteger index = [myObjectArray indexOfObjectPassingTest:^(BOOL)(id obj, NSUInteger idx, BOOL *stop){
myObject anObject = obj;
return [anObject.string1 isEqualToString:otherString];
}
如果有一个对象满足条件,index
将指向您的索引。否则它将具有值NSNotFound
。
如果您希望所有对象都满足条件,您也可以查看indexesOfObjectsPassingTest:
。