2013-07-02 63 views
2

我有一個數組請任何人都可以告訴我如何使用謂詞從數組中過濾數組?

NSArray *arry = [[NSArray alloc]initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil]; 

,我想有數組對象

@"1322",@"13222",@"13322",@"13212" 

可以請你告訴我如何使用謂詞此過濾器。

+4

對此的任何標準? – Alladinian

+0

目前還不清楚你想如何過濾。例如,爲什麼結果中包含「@」13222「',但」@「11322」'不是? –

+0

讓我有四個對象(a,b,g,d),並且我想從所有對象(a,b,c,d,e,f)的數組中檢索這四個(a,b,g,d) ,g,h,.... z)。注意: - 這不像檢索前四個對象。 – Nanda

回答

3

我不知道我是否正確理解你的問題(和評論)。

要查找包含在另一個數組wanted, 您可以使用 「SELF IN%@」 謂詞array所有對象:

NSArray *array = [[NSArray alloc] initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil]; 
NSArray *wanted = [[NSArray alloc] initWithObjects:@"1322", @"13522", @"999", nil]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", wanted]; 
NSArray *filtered = [array filteredArrayUsingPredicate:predicate]; 
NSLog(@"%@", filtered); 

輸出:

 
(
1322, 
13522 
) 
+0

謝謝馬丁這是我正在尋找的一個。 – Nanda

+0

@南達:不客氣。 –

1

嘗試使用這一

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like [c]'1*1*1'"]; 
NSArray *arry = [NSArray arrayWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212", nil]; 
NSArray *resltArry = [array filteredArrayUsingPredicate:predicate]; 
+1

該代碼產生一個空數組... –

0
NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF like [c]'13***'"]; 
NSArray *array = [NSArray arrayWithObjects:@"11321", @"13121", @"23121", @"1111", nil]; 
NSArray *resultArray = [array filteredArrayUsingPredicate:p]; 
NSLog(@"%@",resultArray); 

O/P

( 13121,

你也可以參考這個鏈接 thisone

0
NSArray *yourArray = [[NSArray alloc]initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil]; 
NSArray *filter = [[NSArray alloc] initWithObjects:@"1322", @"13522", nil]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", filter]; 

NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate]; 

filteredArray將包含您的過濾數據。我認爲它也會起作用。

+0

爲什麼你需要複製接受的答案並再次回答..? – NREZ

相關問題