Почему мой NSRange всегда 0?

Я хочу реализовать ключ удаления для своего приложения-калькулятора. Мой псевдокод для этого был:

foo = length of current number
bar = length of current number-1

current number = current number with character at index (foo-bar) removed

Чтобы сделать это в objective-c, я попытался реализовать это, используя функцию NSRange, а также метод StringbyappendingString:

- (IBAction)DelPressed {
if ([self.display.text length] >=2)
{

    int len = [self.display.text length];//Length of entire display

    //Add to the brainlong printing out the length of the entire display
    self.brainlog.text = [NSString stringWithFormat:@"Len is %g",len];

    int le  = ([self.display.text length]-1);//Length of entire display - 1
    NSString *lestring = [NSString stringWithFormat:@"LE is %g",le];

    //Add to the brainlog printing out the length of the display -1
    self.brainlog.text = [self.brainlog.text stringByAppendingString:lestring];    

    NSRange range = NSMakeRange(le, len);//range only includes the last character

    self.display.text = [self.display.text stringByReplacingCharactersInRange:range withString:@" "];//Replace the last character with whitespace
}

Выход в мозговой журнал (т.е. длину как ле и len):

Len is -1.99164 Le is -1.99164

Трудно видеть, но вот изображение числа, которое я вводил в калькулятор с помощью симулятора iOS: iOS sim picture

Я попытался изменить значение le (т.е. сделать его длиной дисплея -3 или -5 и т.д.), и как le, так и len остались прежними.

Я также попытался сделать le в отношении len:

    int len = [self.display.text length];//Length of entire display
    //Add to the brainlong printing out the length of the entire display
    self.brainlog.text = [NSString stringWithFormat:@"Len is %g",len];


    int le = len-1;

Но значения этих двух параметров все те же. Как я могу использовать NSRange для удаления последнего символа дисплея?

Изменить. Используя Dustin fix, я теперь уменьшил довольно длинную функцию в 6 строк кода:

    -(IBAction)DelPressed{
    if ([self.display.text length] >=2)
    {
         self.display.text = [self.display.text substringToIndes:[self.display.text length] -1];
    }
 }

Ответ 1

Используйте substring; это намного лучше, если все, что вы хотите сделать, - удалить последний символ.

Более конкретно, substringToIndex(/*length-1*/)

Отметьте эту ссылку, если вам нужно делать другие вещи со строками