2013-05-03 183 views
1

我有一個NSArrayContact對象,我們可以稱之爲contacts。聯繫人是超類,FacebookGroupIndividualContact的子類。 FacebookGroup有一個名爲individuals的屬性,它是一組Individual對象。過濾自定義對象的NSArray

我還有一個NSArrayNSString對象,我們可以稱它爲userIDs

我想要做的是從現有的contacts陣列中創建一個新的NSArray,該陣列與userIDs中的用戶標識匹配。

所以,如果contacts有3個Contact對象與userID 1,2和3。而我的userIDsNSString對象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; 

回答

0

這是你在找什麼?

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

對不起,我忘了添加一些信息。 'Contact'對象實際上是一個沒有'userID'屬性的超類。子類「FacebookGroup」和「Individual」具有'userID'屬性。看到我更新的問題。 – 2013-05-03 12:22:23

+0

@PeterWarbo:好的,但我認爲代碼也適用於這種情況,你試過了嗎? – 2013-05-03 12:24:40

+0

對不起,我一直忘記信息。 'FacebookGroup'沒有屬性'userID',而是它有''個''對象的'NSSet'屬性。我更新了我的問題。 – 2013-05-03 12:35:10

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

對不起,我忘了補充一些信息。 'Contact'對象實際上是一個沒有'userID'屬性的超類。子類「FacebookGroup」和「Individual」具有'userID'屬性。看到我更新的問題。 – 2013-05-03 12:22:40

0

我希望你們要這樣一次看到這一個,

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 
) 
相關問題