Ответы:
В вашем классе контроллера создайте метод действия, к которому вы подключите кнопку в Интерфейсном Разработчике. Внутри этого метода вы можете обрезать вашу строку следующим образом:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Если вам нужен причудливый способ сделать это всего за одну строку кода, вы можете написать его так:
string = [string substringToIndex:string.length-(string.length>0)];
* Объяснение причудливого фрагмента однострочного кода:
если есть символ, который нужно удалить (т. Е. Длина строки больше 0), то
(string.length>0)возвращается 1 код, возвращающий код:
string = [string substringToIndex:string.length-1];
если нет символа, который нужно удалить (т. Е. Длина строка НЕ больше 0)
(string.length>0)возвращает, 0 что делает возврат кода:
string = [string substringToIndex:string.length-0];
что предотвращает сбои.
string != nil && [string length] > 0. Скорее всего, строковая переменная Донала переиздается.
Если это NSMutableString (который я бы порекомендовал, поскольку вы меняете его динамически), вы можете использовать:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Приведенные здесь решения на самом деле не учитывают многобайтовые символы Юникода («составные символы») и могут привести к недопустимым строкам Юникода.
Фактически, заголовочный файл iOS, который содержит объявление, substringToIndexсодержит следующий комментарий:
Подсказка: используйте с rangeOfComposedCharacterSeptionsForRange: чтобы не разбивать составные символы
Посмотрите, как правильно использоватьrangeOfComposedCharacterSequenceAtIndex: последний символ.
Документация вашего друга, NSStringподдерживает вызов, substringWithRangeкоторый может сократить строку, которую вы возвращаете, сокращенную строку. Вы не можете изменить его экземпляр NSStringнеизменным. Если у вас есть NSMutableStringis есть метод, deleteCharactersInRangeкоторый может изменить строку на месте
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:возвращает NSString*. Обратите внимание на указатель.