Created
June 21, 2016 17:32
-
-
Save douglashill/b52004b90c23aecb9897e0d14a58f3e4 to your computer and use it in GitHub Desktop.
Generates a random string of real US English words using UITextChecker completions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@implementation NSArray (DHRandom) | |
- (nullable id)dh_random { | |
if (self.count == 0) { | |
return nil; | |
} | |
return self[arc4random_uniform((u_int32_t)self.count)]; | |
} | |
@end | |
@implementation UITextChecker (DHNonnull) | |
- (nonnull NSArray<NSString *> *)dh_completionsForPartialWordRange:(NSRange)range inString:(NSString *)string language:(NSString *)language { | |
return (NSArray *)([self completionsForPartialWordRange:range inString:string language:language] ?: @[]); | |
} | |
@end | |
NSString *DHRandomText(void) { | |
id checker = [[UITextChecker alloc] init]; | |
id startingCharacters = @[@"q", @"w", @"e", @"r", @"t", @"y", @"u", @"i", @"o", @"p", @"l", @"k", @"j", @"h", @"g", @"f", @"d", @"s", @"a", @"z", @"x", @"c", @"v", @"b", @"n", @"m"]; | |
NSMutableArray<NSString *> *randomWords = [NSMutableArray array]; | |
while (arc4random_uniform(30) != 0) { | |
NSString *startingCharacter = [startingCharacters dh_random]; | |
NSString *randomWord = [[checker dh_completionsForPartialWordRange:NSMakeRange(0, startingCharacter.length) inString:startingCharacter language:@"en_US"] dh_random]; | |
if (randomWord) { | |
[randomWords addObject:randomWord]; | |
} | |
} | |
return [randomWords componentsJoinedByString:@" "]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment