Respuestas:
En su clase de controlador, cree un método de acción al que conectará el botón en Interface Builder. Dentro de ese método puedes recortar tu cadena de esta manera:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Si desea una forma elegante de hacerlo en una sola línea de código, puede escribirlo como:
string = [string substringToIndex:string.length-(string.length>0)];
* Explicación del fragmento de código elegante de una línea:
si hay un carácter para eliminar (es decir, la longitud de la cadena es mayor que 0), se
(string.length>0)
devuelve 1
el código:
string = [string substringToIndex:string.length-1];
si NO hay un carácter para eliminar (es decir, la longitud del código
la cadena NO es mayor que 0)
(string.length>0)
devuelve0
lo que hace que el código regrese: lo
string = [string substringToIndex:string.length-0];
que evita bloqueos
string != nil && [string length] > 0
. Lo más probable es que la variable de cadena de Donal esté siendo liberada en exceso.
Si es un NSMutableString (que recomendaría ya que lo está cambiando dinámicamente), puede usar:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Las soluciones dadas aquí en realidad no tienen en cuenta los caracteres Unicode de varios bytes ("caracteres compuestos"), y podrían generar cadenas Unicode no válidas.
De hecho, el archivo de encabezado de iOS que contiene la declaración de substringToIndex
contiene el siguiente comentario:
Sugerencia: Use con rangeOfComposedCharacterSequencesForRange: para evitar dividir caracteres compuestos
Vea cómo usarrangeOfComposedCharacterSequenceAtIndex:
para eliminar el último carácter correctamente.
La documentación es su amigo, NSString
admite una llamada substringWithRange
que puede acortar la cadena que le devuelve la cadena acortada. No puede modificar una instancia de NSString
ella es inmutable. Si NSMutableString
tiene un método tiene un método llamado deleteCharactersInRange
que puede modificar la cadena en su lugar
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
devuelve a NSString*
. Toma nota del puntero.