Si quieres ser súper robusta:
__block NSString *lastWord = nil;
[someNSStringHere enumerateSubstringsInRange:NSMakeRange(0, [someNSStringHere length]) options:NSStringEnumerationByWords | NSStringEnumerationReverse usingBlock:^(NSString *substring, NSRange subrange, NSRange enclosingRange, BOOL *stop) {
lastWord = substring;
*stop = YES;
}];
(Esto también se debe trabajar con idiomas no latinos; IOS 4 +/OS X 10.6+.)
Explicación básica:
-enumerateSubstringsInRage:options:usingBlock:
hace lo que dice en la lata: enumera las subcadenas, que se definen por lo que pasa como las opciones. NSStringEnumerationByWords
dice "Quiero palabras para mí", y NSStringEnumerationReverse
dice "comience al final de la cadena en lugar de al principio".
Ya que estamos comenzando desde el final, la primera palabra que se nos da en substring
será la última palabra de la cadena, por lo que establecer lastWord
a que, a continuación, establecer el BOOL
apuntado por stop
a SÍ, por lo la enumeración se detiene de inmediato.
lastWord
es, por supuesto, definido como __block
para que podamos ponerlo en el interior del bloque y verlo fuera, y es inicializado a nil
que si la cadena tiene hay palabras (por ejemplo, si está vacío o tiene que ver con puntuacion) nos no se cuelgue cuando intentemos usar lastWord
.
¿Puedes explicar un poco? –
Claro. Déjame actualizar mi publicación. – Wevah
¡Muchas gracias por su explicación! –