2010-10-23 5 views
0

HI all! J'utilise le message deleteCharactersInRange de NSMutableString. Et il y a un problème que cette finction supprime la gamme dans un mauvais sens. Voici un exemple de code qui fonctionne mal:deleteCharactersInRange fonctionne quelque chose de mal

- (void) btnClick { NSRange DeleteRange = NSMakeRange (0, 1); [valueStr deleteCharactersInRange: deleteRange]; [self ShowNumber]; J'ai une chaîne mutable: "-21.256" et quand j'appuie sur le bouton btnClick il faut supprimer "-" depuis le début mais il le fait seulement après le 5ème temps de presses. Ealier ça a bien fonctionné, mais maintenant non. Aide s'il vous plaît, ou que puis-je utiliser à la place cette fonction? Merci!

+0

Le 'deleteCharactersInRange' devrait fonctionner très bien, avez-vous essayé d'ajouter le dans de NSLog au début et à la fin de la méthode, de vérifier ce que les valeurs de 'valueStr' sont avant et après le' deleteCharactersInRange'? – DarkDust

+0

oui! et pas une fois. – yozhik

Répondre

0

Je pense que ce sera intéressant pour vous. J'itinialized ma chaîne de telle manière:

NSString *buf = nil; 
buf = [NSString stringWithFormat:@"%14.5f", myCalculator.calcValue]; 

après que j'ajouter cette corde à mon NSMutableString. Et avec la chaîne que je faisais des opérations avec l'aide de func:

[string deleteCharactersInRange:NSMakeRange(0, 1)]; 

Mais charachters ont été Masqués seulement après le cycle 6 ou 7 de cliquer.

Solution:

Le problème est en @ « % 14.5f » dans cette chaîne, nous avons: « -2,00000 » au lieu de « -2,00000 » si la fonction fait bien son travail, mais il Supprimer les espaces blancs au lieu de "-".

Nous avons donc besoin de convertir de telle façon: @ « % f »

0

Votre code devrait fonctionner parfaitement:

NSMutableString *string = [NSMutableString stringWithString:@"-21.256"]; 
NSLog(@"%@", string); 
[string deleteCharactersInRange:NSMakeRange(0, 1)]; 
NSLog(@"%@", string); 

résultats dans:

-21.256 
21.256 

Votre problème doit être ailleurs.

Questions connexes