2012-12-17 31 views
0

我有下面的過濾某些結果的方法: 目前,它這樣做: 數組:α,蘋果,白羊座,布拉沃在字符串數組的任何地方發現了一封信IOS

類型:

阿爾法 蘋果 白羊

類型升(現在的人)

阿爾法

我想這樣做:

新的搜索: 型P = 阿爾法 蘋果

下面

是代碼

千恩萬謝提前

-(void) filterResults:(NSString *)searchText{ 
    NSMutableArray *test = [NSMutableArray arrayWithArray:self.listContent]; 

    [self.filteredListContent removeAllObjects]; // First clear the filtered array. 
     for (int i=0; i<[test count]; i++) { 
      NSString *stringResult = [test objectAtIndex:i]; 
      NSComparisonResult result = [stringResult compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])]; 

      if (result == NSOrderedSame){ 
       [self.filteredListContent addObject:stringResult]; 

      } 
     } 
    [self.filteredListContent sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];//sort alphabetically 
    NSLog(@"filtered results = %@",self.filteredListContent); 
} 
+0

檢查此問題[NSPredicate搜索NSString類似SQL命令](http://stackoverflow.com/questions/13873855/nspredicate-to-search-nsstrings-like-sql-command) – iDev

回答

1

爲了找到字母中任意位置的字母,請將其替換爲:

NSComparisonResult result = [stringResult compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])]; 
if (result == NSOrderedSame){ 
    [self.filteredListContent addObject:stringResult]; 
} 

與此:

NSRange range = [stringResult rangeOfString:searchText]; 
if (range.location != NSNotFound) { 
    [self.filteredListContent addObject:stringResult]; 
} 

注意,它必須找到人物的所有,爲了。

如果您想查找的任何的字符,請使用rangeOfCharacterFromSet:

0

試試這個。

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"SELF beginswith '%@'", searchText]]; 
self.filteredListContent = [self.listContent filteredArrayUsingPredicate:predicate]; 

希望這可以幫助你。

相關問題