Respostas:
Na sua classe de controlador, crie um método de ação para o qual você conectará o botão no Interface Builder. Dentro desse método, você pode aparar sua string assim:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Se você quiser uma maneira elegante de fazer isso em apenas uma linha de código, escreva-a como:
string = [string substringToIndex:string.length-(string.length>0)];
* Explicação do trecho de código de uma linha sofisticado:
Se houver um caractere a ser excluído (ou seja, o comprimento da string for maior que 0)
(string.length>0)
retornará 1
, fazendo com que o código retorne:
string = [string substringToIndex:string.length-1];
Se NÃO houver um caractere a ser excluído (ou seja, o comprimento do string NÃO é maior que 0)
(string.length>0)
retorna 0
, fazendo com que o código retorne: O
string = [string substringToIndex:string.length-0];
que evita falhas.
string != nil && [string length] > 0
. Provavelmente, a variável de string de Donal está sendo liberada em excesso.
Se for um NSMutableString (o que eu recomendaria, pois você o altera dinamicamente), você pode usar:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
As soluções fornecidas aqui, na verdade, não levam em consideração caracteres Unicode de vários bytes ("caracteres compostos") e podem resultar em seqüências de caracteres Unicode inválidas.
De fato, o arquivo de cabeçalho do iOS que contém a declaração de substringToIndex
contém o seguinte comentário:
Dica: Use com rangeOfComposedCharacterSequencesForRange: para evitar a quebra de caracteres compostos
Veja como usarrangeOfComposedCharacterSequenceAtIndex:
para excluir o último caractere corretamente.
A documentação é sua amiga, NSString
suporta uma chamada substringWithRange
que pode encurtar a string que você tem para retornar a String encurtada. Você não pode modificar uma instância NSString
dela é imutável. Se você tem um NSMutableString
é chamado um método deleteCharactersInRange
que pode modificar a sequência no lugar
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
retorna a NSString*
. Tome nota do ponteiro.