首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据数组的NSString字段匹配NSString

根据数组的NSString字段匹配NSString
EN

Stack Overflow用户
提问于 2011-06-24 13:54:45
回答 1查看 592关注 0票数 2

我有一个名为myObjectArray的NSMutableArray,它包含一个名为myObject的NSObjects数组。myObject有两个字段(元素?)它们是NSString的。就像这样:

代码语言:javascript
复制
@interface myObject : NSObject {
   NSString * string1;
   NSString * string2;
}

我有一个包含大约50个这样的对象的NSMutableArray,所有这些对象都有不同的字符串1和字符串2。然后我有一个独立的NSString变量,称为otherString;

有没有一种快速方法可以从myObjectArray访问string1与otherString匹配的otherString?

我应该说,这就是我所拥有的,但我想知道是否有更快的方法:

代码语言:javascript
复制
-(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
        }

    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-24 14:13:05

有几种方法可以做到这一点,

使用谓词的

代码语言:javascript
复制
NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"string1 MATCHES[cd] %@", otherString];
NSArray * filteredArray = [myObjectArray filteredArrayUsingPredicate:filterPredicate];

现在,filteredArray拥有其string1otherString匹配的所有myObject实例。

使用

代码语言:javascript
复制
NSUInteger index = [myObjectArray indexOfObjectPassingTest:^(BOOL)(id obj, NSUInteger idx, BOOL *stop){
    myObject anObject = obj;
    return [anObject.string1 isEqualToString:otherString];
}

如果存在满足条件的对象,index会将您指向其索引。否则,它的值将为NSNotFound

如果希望所有对象都满足条件,也可以查看indexesOfObjectsPassingTest:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6463975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档