0

いくつかの結果をフィルタリングするための以下の方法があります: 現在、これを行います:

タイプ a:

アルファりんご牡羊座

タイプ l (現在は al)

アルファ

私はこれをやりたかった:

新しい検索: タイプ 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);
}
4

2 に答える 2

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:は、 を使用します。

于 2012-12-17T06:11:03.740 に答える
0

これを試してみてください。

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

これがお役に立てば幸いです。

于 2012-12-17T06:36:06.273 に答える