2013-12-20 93 views
1
NSArray *MainArray = [NSArray arrayWithObjects:@"A", @"U", @"U", @"U", nil]; // Array already stored 

NSArray *SubArray = [NSArray arrayWithObjects:@"A", @"U", nil]; // Array I passed during runtime 

使用這兩個數組,我需要從MainArray獲取U U使用NSPredicate比較兩個數組並返回重複字符

這個概念是我必須從MainArray中刪除A U,這是我在運行時通過的。

SampleOutput : 
U U 
+0

什麼特別的 '最後2''U's?如果你發現整個'SubArray'的匹配,那麼這些項目應該被刪除? – Wain

+0

@我需要從主數組中刪除確切的一個匹配 –

+0

爲什麼要使用謂詞? – Wain

回答

2

您可以使用此方法:

NSMutableArray *mainMutableArray = [NSMutableArray arrayWithArray:MainArray]; 
for (id instance in SubArray) { 
    NSUInteger position = [mainMutableArray indexOfObject:instance]; 
    if (position != NSNotFound) { 
     [mainMutableArray removeObjectAtIndex:position]; 
    } 
} 
MainArray = [NSArray arrayWithArray:mainMutableArray]; 
+0

如何使用謂詞做到這一點? –

+0

謝謝你,..我明白了 –

0
NSSet *set1 = [NSSet setWithArray:MainArray]; 
NSMutableSet *set2 = [NSMutableSet setWithArray:SubArray]; 
[set2 minusSet:set1]; 

試試這個代碼..

+0

這不會產生在集合/數組中剩餘的重複U U的期望結果 – tjboneman

+0

意味着哪個輸出給出了這個代碼? –

+0

你也可以使用這個 NSMutableArray * arrayOneCopy = [NSMutableArray arrayWithArray:MainArray]; [arrayOneCopy removeObjectsInArray:SubArray]; –