0

内容が db から選択された配列がいくつかあります。「searchTextField」に入力したテキストを、DB から取得した配列の内容と一致させたいと考えています。

たとえばmyArray={'bat man','bat and ball','ball'}; 、「searchTextField」に「bat」と入力した場合、配列には次のものが含まれます。配列内の一致するテキストのインデックスを表示する必要があります (この場合はインデックス 0 と 1)。

どうすればこれを達成できますか..あなたの助けを待っています..

4

1 に答える 1

4
NSMutableArray *tempArray = [NSMutableArray arrayWithObjects:@"bat man",@"bat and ball",@"ball", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'bat'"];
NSArray *result = [tempArray filteredArrayUsingPredicate:predicate];

result配列にはフィルタリングされたオブジェクトが含まれ、そこからインデックスを次のように取得できます。

[tempArray indexOfObject:/結果配列からのオブジェクト、1 つずつ/]

contains[c]検索で大文字と小文字が区別されないことを意味します。述語の詳細: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html

編集

textField のデリゲートを自分自身として設定します。その前に、YourFile.h に移動し、そこにUITextFieldDelegate. 今これをtextFieldShouldReturn行います:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

    NSMutableArray *tempArray = [NSMutableArray arrayWithObjects:@"bat man",@"bat and ball",@"ball", nil];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",textField.text];
    NSArray *result = [tempArray filteredArrayUsingPredicate:predicate];

    return YES;
}
于 2013-02-13T11:25:57.860 に答える