deleteCharactersInRange работает что-то не так

Всем привет! Я использую сообщение deleteCharactersInRange из NSMutableString. И есть проблема, что эта функция неправильно удаляет диапазон. Вот пример кода, который работает неправильно:

-(void) btnClick { NSRange deleteRange = NSMakeRange(0, 1); [valueStr deleteCharactersInRange:deleteRange]; [себя ShowNumber]; }

У меня есть изменяемая строка: «-21.256», и когда я нажимаю кнопку btnClick, она должна удалить «-» с самого начала, но делает это только после 5-го нажатия. Раньше работало нормально, а сейчас нет. Помогите пожалуйста, или что можно использовать вместо этой функции? Спасибо!


person yozhik    schedule 23.10.2010    source источник
comment
deleteCharactersInRange должен работать нормально, вы пытались добавить NSLog в начале и в конце метода, чтобы проверить, какие значения valueStr до и после deleteCharactersInRange ?   -  person DarkDust    schedule 24.10.2010


Ответы (2)


Ваш код должен работать нормально:

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

приводит к:

-21.256
21.256

Ваша проблема должна быть в другом.

person greg    schedule 24.10.2010

Думаю, вам будет интересно. Я инициализировал свою строку таким образом:

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

после этого я добавляю эту строку в свой NSMutableString. А со строкой я проделал операции с помощью func:

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

Но символы удалялись только после 6-го или 7-го цикла кликов.

Решение:

Проблема в @"%14.5f" в этой строке у нас есть: "-2.00000" вместо "-2.00000" так что функция работает хорошо, но она удалила пробелы вместо "-" .

Итак, нам нужно преобразовать таким образом: @"%f"

person yozhik    schedule 24.10.2010