2012-08-02 3 views
0

J'essaie d'implémenter la méthode de saisie semi-automatique dans une application. Au fur et à mesure que je tape des caractères, il renvoie des mots qui correspondent au premier caractère. Par exemple si je tape "B" ou "ba" il retourne une chaîne commençant par "ba" comme "Ballon" et "Ball". Mais dans mon tableau, il y a des chaînes avec plus d'un mot qui sont séparées par '(' ou 'espace') Exemple "Balle Blanche" ou "" Géant (Big) "Je dois aussi obtenir ces chaînes. sera très appréciée.Recherche sur une chaîne contenant plusieurs mots séparés par des caractères spéciaux

Voici le code que je utilise,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    autocompleteTableView.hidden = NO; 

    NSString *substring = [NSString stringWithString:textField.text]; 
    substring = [substring stringByReplacingCharactersInRange:range withString:string]; 
    [self searchAutocompleteEntriesWithSubstring:substring]; 
    return YES; 
} 

- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring { 

    [autocompleteList removeAllObjects]; 
    for(NSString *curString in contentArray) 
    { 
     NSRange substringRange = [curString rangeOfString:substring options:NSCaseInsensitiveSearch]; 

     if (substringRange.location == 0) 
     { 
      [autocompleteList addObject:curString]; 
     } 
    } 
    [autocompleteTableView reloadData]; 
} 

Merci

Répondre

0

le problème se trouve dans votre si la condition

if (substringRange.location == 0) 
    { 
     [autocompleteList addObject:curString]; 
    } 

Depuis que vous vérifiez pour l'emplacement 0 , seules les chaînes commençant par la sous-chaîne seront renvoyées. Changer la condition comme suit devrait vous aider à résoudre le problème.

if (substringRange.location != NSNotfound) 
    { 
     [autocompleteList addObject:curString]; 
    } 
+0

@ Suhas .. Merci compagnon. Ça a marché. :) – Sibin

Questions connexes