在数组中搜索

时间:2014-09-09 09:57:42

标签: ios objective-c arrays

我有一个名为myArray的数组:

  

@property(非原子,强)NSArray * myArray;

myArray的NSLog是:

  

2014-09-09 11:25:24.108 MyApp [8139:60b]阵列是:(           (           35,           约翰,           戴维斯           14,           1       )           (           36,           哈利,           DOE,           21,           1       )           (           37,           麦克风,           布拉沃,           22,           1       ))

我想测试myArray中是否存在firstName。例如:如果" Mike"存在于myArray中......我怎么能这样做?这当然很容易,但我不知道该怎么做......

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

好的,所以看起来你的数组是一个数组数组。有点奇怪地存储数据,但你可以做这样的事情......

- (BOOL)doesArray:(NSArray*)array containName:(NSString *)name
{
    for (NSArray *propertyArray in array) {
        if ([propertyArray containsObject:name]) {
            return YES;
        }
    }
    return NO;
}

这将告诉您数组是否包含给定的文本。

如果需要,您也可以使用类似的东西过滤它。

- (NSArray *)filterArray:(NSArray *)array containingName:(NSString *)name
{
    NSPredicate *predicate = [NSPredicate predicateWithBlock:^(NSArray *propertyArray, NSDictionary *bindings) {
        return [propertyArray containsObject:name];
    }];

    return [array filteredArrayUsingPredicate:predicate];
}

由此返回的数组将包含任何包含给定文本的数组。

答案 1 :(得分:0)

尝试以下解决方案

for(int i=0;i<array.count;i++)

{
    NSArray *subArray=[array objectAtIndex:i];

    for(int j=0;j<subArray.count;j++)
    {
       MyObject *obj=[subArray objectAtIndex:j];
       if(array containsObject:obj.firstName)
    {
      [self.filteredArray addObject:obj];
    }

}

它看起来更像代码..但希望它可以帮助你......!