Tuesday, May 21, 2013

NSString NSStringEnumerationReverse example ios


String Enumeration Options - NSStringEnumerationReverse

Constants to specify kinds of substrings and styles of enumeration.
typedef NSUInteger NSStringEnumerationOptions;
enum {
NSStringEnumerationByLines = 0,
NSStringEnumerationByParagraphs = 1,
NSStringEnumerationByComposedCharacterSequences = 2,
NSStringEnumerationByWords = 3,
NSStringEnumerationBySentences = 4,
NSStringEnumerationReverse = 1UL << 8,
NSStringEnumerationSubstringNotRequired = 1UL << 9,
NSStringEnumerationLocalized = 1UL << 10
};
Constants
NSStringEnumerationByLines
Enumerates by lines. Equivalent to lineRangeForRange:.
NSStringEnumerationByParagraphs
Enumerates by paragraphs. Equivalent to paragraphRangeForRange:.
NSStringEnumerationByComposedCharacterSequences
Enumerates by composed character sequences. Equivalent torangeOfComposedCharacterSequencesForRange:.
NSStringEnumerationByWords
Enumerates by words.
NSStringEnumerationBySentences
Enumerates by sentences.
[NSString NSStringEnumerationReverse]
NSStringEnumerationReverse
Causes enumeration to occur from the end of the specified range to the start.
NSStringEnumerationSubstringNotRequired
A way to indicate that the block does not need substring, in which case nil will be passed. This is simply a performance shortcut.
NSStringEnumerationLocalized
Causes the enumeration to occur using user's default locale. This does not make a difference in line, paragraph, or composed character sequence enumeration, but it may for words or sentences.
Discussion of [NSString NSStringEnumerationReverse]
These options are used with theenumerateSubstringsInRange:options:usingBlock: method. Pass in oneNSStringEnumerationBy... option and combine with any of the remaining enumeration style constants using the C bitwise OR operator.
Example of [NSString NSStringEnumerationReverse]
__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;
}];

Example of [NSString NSStringEnumerationReverse]
NSString *myString = [NSString stringWithString:@"abcdefghijklmnopqrstuvwxyz"];
NSMutableString *reversedString = [NSMutableString stringWithCapacity:[myString length]];

[myString enumerateSubstringsInRange:NSMakeRange(0,[myString length]) 
                           options:(NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences)
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                            [reversedString appendString:substring];
                        }];

// reversedString is now zyxwvutsrqponmlkjihgfedcba
Example of [NSString NSStringEnumerationReverse]
- (NSString *)reverseString:(NSString *)string {
    NSMutableString *reversedString = [[NSMutableString alloc] init];
    NSRange fullRange = [string rangeOfString:string];
    NSStringEnumerationOptions enumerationOptions = (NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences);
    [string enumerateSubstringsInRange:fullRange options:enumerationOptions usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
        [reversedString appendString:substring];
    }];
    return reversedString;
}