Ответы:
В вашем классе контроллера создайте метод действия, к которому вы подключите кнопку в Интерфейсном Разработчике. Внутри этого метода вы можете обрезать вашу строку следующим образом:
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
неизменным. Если у вас есть NSMutableString
is есть метод, deleteCharactersInRange
который может изменить строку на месте
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
возвращает NSString*
. Обратите внимание на указатель.