Skip to content

Instantly share code, notes, and snippets.

@douglashill
Created June 21, 2016 17:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save douglashill/b52004b90c23aecb9897e0d14a58f3e4 to your computer and use it in GitHub Desktop.
Save douglashill/b52004b90c23aecb9897e0d14a58f3e4 to your computer and use it in GitHub Desktop.
Generates a random string of real US English words using UITextChecker completions
@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