Відповіді:
У вашому класі контролера створіть метод дії, до якого підключите кнопку до Інтерфейсу. Всередині цього методу ви можете обрізати рядок так:
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)];
Наведені тут рішення фактично не враховують багатобайтові символи Unicode ("складені символи") і можуть призвести до недійсних рядків Unicode.
Фактично, файл заголовка iOS, який містить декларацію, substringToIndex
містить такий коментар:
Підказка: Використовуйте з rangeOfComposedCharacterSequencesForRange: щоб уникнути розбиття складених символів
Подивіться, як правильноrangeOfComposedCharacterSequenceAtIndex:
видалити останній символ.
Документація є вашим другом, NSString
підтримує дзвінок, substringWithRange
який може скоротити рядок, який ви маєте повернути скороченому рядку. Ви не можете змінити його примірник NSString
, незмінний. Якщо у вас є NSMutableString
метод, який називається, deleteCharactersInRange
який може змінювати рядок на місці
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
повертає а NSString*
. Візьміть на замітку вказівник.