-3

私の配列は

{
    "Samsung Tab",
    "Samsung Note",
    "Samsung Galaxy",
    "Samsung Galaxy Pro",
    "Nokia Lumia",
    "Nokia 5130",
    "Sony Xperia"
}     

そんな感じ。テキストボックスタイプがGALAXYで、ボタンをクリックします。次のリストビューでは、Samsung Galaxy、SamsungGalaxyProのみを表示したいと思います。誰か助けてもらえますか?

4

5 に答える 5

2

述語を使用して、以下のような配列をフィルタリングします

NSArray *arrayMobiles= [NSArray arrayWithObjects:@"Samsung Tab",@"Samsung Note", @"Samsung Galaxy", @"Samsung Galaxy Pro", @"Nokia Lumia", @"Nokia 5130",@"Nokia 5130",@"Sony Xperia", nil];
NSString *strSearchkey = @"GALAXY";
NSPredicate *containPred = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", strSearchkey];
NSArray *arrayFilter = [arrayMobiles filteredArrayUsingPredicate:containPred];
NSLog(@"%@",arrayFilter);
//output 
"Samsung Galaxy",
"Samsung Galaxy Pro"
于 2013-02-11T06:45:54.830 に答える
1

これはあなたを助けるかもしれません

- (void)searchArrayFrom: (NSString *) matchString{

NSString *upString = [matchString uppercaseString];
if (searchArray){[searchArray release];searchArray = nil;}
searchArray = [[NSMutableArray alloc] init];
NSMutableArray *temp = [internalEvents copy];

for (int i=0;i<[temp count];i++)
{
    NSString *str = [internalEvents objectAtIndex:i];
    // Add everyone when there's nothing to match to
    if ([matchString length] == 0)
    {
        [searchArray addObject:str];

        continue;
    }

    // Add the person if the string matches

    NSRange range = [[str uppercaseString] rangeOfString:upString];
    if (range.location != NSNotFound) {
        [searchArray addObject:str];
    }
}


[temp release];
temp = nil;
[tblView reloadData];

}

于 2013-02-11T06:26:59.710 に答える
1

TwoNSMutableArrayを取り、次のようなメソッドで1 つの配列を別の配列に追加します。ViewDidLoad

self.listOfTemArray = [[NSMutableArray alloc] init]; // array no - 1
self.ItemOfMainArray = [[NSMutableArray alloc] initWithObjects:@"YorArrayList", nil]; // array no - 2 

[self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray]; // add 2array to 1 array

UISearchBar のデリゲート メソッドを次のように記述します。

- (BOOL) textFieldDidChange:(UITextField *)textField
 {
        NSString *name = @"";
        NSString *firstLetter = @"";

    if (self.listOfTemArray.count > 0)
         [self.listOfTemArray removeAllObjects];

        if ([searchText length] > 0)
        {
                for (int i = 0; i < [self.ItemOfMainArray count] ; i = i+1)
                {
                        name = [self.ItemOfMainArray objectAtIndex:i];

                        if (name.length >= searchText.length)
                        {
                                firstLetter = [name substringWithRange:NSMakeRange(0, [searchText length])];
                                //NSLog(@"%@",firstLetter);

                                if( [firstLetter caseInsensitiveCompare:searchText] == NSOrderedSame )
                                {
                                    // strings are equal except for possibly case
                                    [self.listOfTemArray addObject: [self.ItemOfMainArray objectAtIndex:i]];
                                    NSLog(@"=========> %@",self.listOfTemArray);
                                }
                         }
                 }
         }
         else
         {
             [self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray ];
         }

        [self.tblView reloadData];
}

}

あなたの出力ショーConsol.

このコードはあなたに役立つかもしれません...ありがとう:)

于 2013-02-11T06:32:20.507 に答える
1

以下の関数を使用できます。

- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring
{
        for (int i = 0; i < [yourArray count]; i++)
        {
            NSString *curString = [[yourArray objectAtIndex:i]lowercaseString];
            NSString *searchString = [substring lowercaseString];

            if ([curString rangeOfString:curStringSmall].location == NSNotFound)
            {
            }
            else
            {
                //This means searched text is found in your array. you can store it in new array. Which will give you only the search criteria matched element.
            }
        }
}

検索ボタンのクリック時にこの関数を呼び出す必要があります。お気に入り :

-(void)searchButtonClicked
{
     [self searchAutocompleteEntriesWithSubstring:txtSearch.text];
}
于 2013-02-11T06:32:30.643 に答える
0

あなたはNSPredictionを使うかもしれません

NSString * SEARCH_KEYWORD = @"s";

NSMutableArray *array =
    [NSMutableArray arrayWithObjects:@"Bill", @"Ben", @"Chris", @"Melissa", nil];

NSPredicate *sPredicate =
   [NSPredicate predicateWithFormat:@"SELF contains[c] '%@'", SEARCH_KEYWORD];
[array filterUsingPredicate:sPredicate];
// array now contains { @"Chris", @"Melissa" } 
于 2013-02-11T06:40:45.240 に答える