超堅牢にしたい場合:
__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;
}];
(これはローマ字以外の言語でも動作するはずです; iOS 4+/OS X 10.6+.)
基本的な説明:
-enumerateSubstringsInRage:options:usingBlock:缶に書かれていることを行います。オプションとして渡すものによって定義される部分文字列を列挙します。NSStringEnumerationByWords「私に与えられた言葉が欲しい」とNSStringEnumerationReverse言い、「文字列の先頭ではなく末尾から始めてください」と言います。
最後から始めているので、最初に与えられたsubstring単語が文字列の最後の単語になるので、その単語を設定lastWordし、BOOL指している bystopを YES に設定して、列挙がすぐに停止するようにします。
lastWordはもちろん として定義されて__blockいるため、ブロック内に設定して外に表示することがnilでき、文字列に単語が含まれていない場合 (たとえば、空であるか、すべて句読点である場合) に初期化されているため、使用しようとしてもクラッシュしません。lastWord.