Jawaban:
Di kelas pengontrol Anda, buat metode tindakan yang akan Anda kaitkan tombol di dalam Interface Builder. Di dalam metode itu Anda dapat memotong string Anda seperti ini:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Jika Anda ingin cara mewah melakukan ini hanya dalam satu baris kode Anda dapat menuliskannya sebagai:
string = [string substringToIndex:string.length-(string.length>0)];
* Penjelasan potongan kode mewah satu baris:
Jika ada karakter yang akan dihapus (yaitu panjang string lebih besar dari 0)
(string.length>0)
mengembalikan 1
sehingga membuat kode kembali:
string = [string substringToIndex:string.length-1];
Jika TIDAK ada karakter untuk dihapus (yaitu panjang karakter string TIDAK lebih besar dari 0)
(string.length>0)
mengembalikan 0
sehingga membuat kode kembali:
string = [string substringToIndex:string.length-0];
Yang mencegah crash.
string != nil && [string length] > 0
. Kemungkinan variabel string Donal sedang dirilis berlebihan.
Jika ini adalah NSMutableString (yang saya sarankan karena Anda mengubahnya secara dinamis), Anda dapat menggunakan:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Solusi yang diberikan di sini sebenarnya tidak memperhitungkan karakter Unicode multi-byte ("karakter tersusun"), dan dapat mengakibatkan string Unicode tidak valid.
Bahkan, file header iOS yang berisi deklarasi substringToIndex
berisi komentar berikut:
Petunjuk: Gunakan dengan rangeOfComposedCharacterSequencesForRange: untuk menghindari putusnya karakter yang dikomposisikan
Lihat cara menggunakanrangeOfComposedCharacterSequenceAtIndex:
untuk menghapus karakter terakhir dengan benar.
Dokumentasi adalah teman Anda, NSString
mendukung panggilan substringWithRange
yang dapat mempersingkat string yang Anda kembalikan String yang dipersingkat. Anda tidak dapat mengubah contoh NSString
itu tidak berubah. Jika Anda memiliki NSMutableString
adalah memiliki metode yang disebut deleteCharactersInRange
yang dapat memodifikasi string di tempat
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
mengembalikan a NSString*
. Perhatikan pointer.