Existe uma maneira simples de dividir um NSString em uma matriz de caracteres?

Existe uma maneira simples de dividir um NSString em uma matriz de caracteres? Na verdade, seria melhor se o tipo resultante fosse uma coleção de NSString, com apenas um caractere cada.

Sim, eu sei que posso fazer isso em um loop, mas eu estou querendo saber se existe uma maneira mais rápida de fazer isso com quaisquer methods existentes ou funções do jeito que você pode com LINQ em c #.

por exemplo

// I have this... NSString * fooString = @"Hello"; // And want this... NSArray * fooChars; // <-- Contains the NSStrings, @"H", @"e", @"l", @"l" and @"o" 

Você poderia fazer algo assim (se você quiser usar enumeradores)

 NSString *fooString = @"Hello"; NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[fooString length]]; [fooString enumerateSubstringsInRange:NSMakeRange(0, fooString.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { [characters addObject:substring]; }]; 

E se você realmente queria isso em um NSArray finalmente

 NSArray *fooChars = [NSArray arrayWithArray:characters]; 

Certifique-se de que alguns personagens como emoji e outros podem ter um alcance maior do que apenas um índice.

Aqui está um método de categoria para NSString

 @implementation (SplitString) - (NSArray *)splitString { NSUInteger index = 0; NSMutableArray *array = [NSMutableArray arrayWithCapacity:self.length]; while (index < self.length) { NSRange range = [self rangeOfComposedCharacterSequenceAtIndex:index]; NSString *substring = [self substringWithRange:range]; [array addObject:substring]; index = range.location + range.length; } return array; } @end 

convertê-lo para NSData o [data bytes] terá uma seqüência C na codificação que você escolhe [data length] bytes de comprimento.

Tente isso

 NSMutableArray *array = [NSMutableArray array]; NSString *str = @"Hello"; for (int i = 0; i < [str length]; i++) { NSString *ch = [str substringWithRange:NSMakeRange(i, 1)]; array addObject:ch]; }