过滤自定义对象的NSArray

时间:2013-05-03 10:57:41

标签: objective-c cocoa nsarray filtering

我有NSArrayContact个对象,我们可以将其称为contacts。联系人是超类,FacebookGroupIndividualContact的子类。 FacebookGroup有一个名为individuals的属性,它是一组Individual个对象。

我还有NSArrayNSString个对象,我们可以将其称为userIDs

我想要做的是从现有的NSArray数组中创建一个与contacts中的用户ID匹配的新userIDs

因此,如果contacts有3个Contact个对象userID 1,2和3.我的userIDs有一个NSString对象3.然后我想要结果数组包含Contact等于userID 3。

Contact.h

Contact : NSObject

FacebookGroup.h

FacebookGroup : Contact

@property (nonatomic, strong) NSSet *individuals;

Individual.h

Individual : Contact

@property (nonatomic, strong) NSString *userID;

3 个答案:

答案 0 :(得分:4)

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userId = %@", myContact.userId];
NSArray *filteredArray = [contacts filteredArrayUsingPredicate:predicate];

答案 1 :(得分:0)

这是你在找什么?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userID IN %@", userIDs];
NSArray *filtered = [contacts filteredArrayUsingPredicate:predicate];

答案 2 :(得分:-1)

我希望你能想到这样的一次,

 NSMutableArray *names = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];
    NSMutableArray *ids = [NSMutableArray arrayWithObjects:@"1", @"2", @"2", @"3", nil];
    NSMutableArray *array=[[NSMutableArray alloc]init];
    for(int i=0;i<[ids count];i++){
       if([[ids objectAtIndex:i] isEqualToString:@"2"])
           [array addObject:[names objectAtIndex:i]];
    }
    NSLog(@"%@",array);

O / P: -

(
    two,
    three
)