2012-02-18 25 views
0

我想要實現全文檢索和我做的是這樣的:如何創建一個NSPredicate,用於過濾給定範圍內的所有字符,包括數字/數字?

NSString* start = @"a"; 
NSString* stop = [start stringByAppendingString:@"zzz"]; 
NSArray* range = [NSArray arrayWithObjects:[NSExpression expressionForConstantValue:start],[NSExpression expressionForConstantValue:stop],nil]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY keyword.word BETWEEN %@",range]; 

開始是可變的,變化取決於什麼I型(即,如果我輸入「酷」就意味着開始= @「酷」,並停止將是@「coolzzz」)。

現在這個工程很好,直到我的輸入是一個數字或數字,NSPredicate不會返回任何結果,即使有。

例如在我的數據中,我有形狀entry_name 1,entry_name 2的條目。如果我輸入entry_name我得到的所有結果,但只要我輸入entry_name 1我沒有結果。

測試後,我已經看到了,如果我剛進入1我沒有得到任何結果,因此NSPredicate不起作用。

我如何寫一個NSPredicate它過濾所有的字符,包括數字?

回答

1

你並不需要創建一個範圍BETWEEN運算,簡單的陣列就足夠了:

NSString* start = @"a"; 
NSString* stop = [start stringByAppendingString:@"zzz"]; 
NSPredicate *betweenPredicate = [NSPredicate predicateWithFormat: @"attributeName BETWEEN %@", 
            [NSArray arrayWithObjects:start, stop, nil]]; 

也見Predicate Programming Guide

0
NSString *[email protected]"string u want to search"; 

NSArray *range = [NSArray arrayWithObjects:@"entry_name 1",@"entry_name 2",@"entry_name 3",@"entry_name 4",@"entry_name5",nil]; 
NSMutableArray *match = [[NSMutableArray alloc] init]; 
for (int i=0; i<[range count];i++) 
{ 
    NSString *sTemp = [range objectAtIndex:i] ; 
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

    if (titleResultsRange.length > 0) 
     [match addObject:sTemp]; 
} 
NSLog(@"match= %@",match); 

use above code for searching. 
相關問題