Antworten:
Erstellen Sie in Ihrer Controller-Klasse eine Aktionsmethode, mit der Sie die Schaltfläche in Interface Builder verbinden. Innerhalb dieser Methode können Sie Ihre Saite wie folgt kürzen:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Wenn Sie eine ausgefallene Methode in nur einer Codezeile suchen, können Sie diese wie folgt schreiben:
string = [string substringToIndex:string.length-(string.length>0)];
* Erklärung der Phantasie einzeiligen Code - Schnipsel:
Wenn es ein Zeichen zu löschen ist (dh die Länge der Zeichenfolge größer als 0)
(string.length>0)
kehrt 1
somit den Code Rückkehr zu machen:
string = [string substringToIndex:string.length-1];
Wenn es kein Zeichen (dh die Länge der löschen ist Zeichenfolge ist NICHT größer als 0) gibt
(string.length>0)
zurück, 0
wodurch der Code zurückgegeben wird:
string = [string substringToIndex:string.length-0];
Dies verhindert Abstürze.
string != nil && [string length] > 0
. Es besteht die Möglichkeit, dass Donals String-Variable über freigegeben wird.
Wenn es sich um einen NSMutableString handelt (den ich empfehlen würde, da Sie ihn dynamisch ändern), können Sie Folgendes verwenden:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Die hier angegebenen Lösungen berücksichtigen tatsächlich keine Mehrbyte-Unicode-Zeichen ("zusammengesetzte Zeichen") und können zu ungültigen Unicode-Zeichenfolgen führen.
Tatsächlich enthält die iOS-Headerdatei, die die Deklaration von substringToIndex
enthält, den folgenden Kommentar:
Hinweis: Mit rangeOfComposedCharacterSequencesForRange verwenden: um zu vermeiden, dass zusammengesetzte Zeichen getrennt werden
Hier erfahren Sie, wie SierangeOfComposedCharacterSequenceAtIndex:
das letzte Zeichen korrekt löschen.
Die Dokumentation ist dein Freund, NSString
unterstützt einen Aufruf substringWithRange
, der die Zeichenfolge verkürzen kann, die du hast, um die verkürzte Zeichenfolge zurückzugeben. Sie können eine Instanz nicht ändern, die NSString
unveränderlich ist. Wenn Sie eine NSMutableString
is haben, wird eine Methode aufgerufen deleteCharactersInRange
, mit der die Zeichenfolge geändert werden kann
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
gibt a zurück NSString*
. Beachten Sie den Zeiger.