Cómo get caracteres individuales de cadena en ios para el idioma Gujrati (otro idioma)

Estoy tratando de get caracteres únicos de NSString , como "ઐતિહાસિક", "પ્રકાશન", "ક્રોધ" . Quiero salida como 1) ઐ, તિ, હા, સિ, ક 2) પ્ર, કા, શ, ન 3) ક્રો, ધ , pero la salida viene de esta manera 1) ઐ, ત, િ, હ, િ, ક 2 ) પ, ્, ર, ક, ા, શ, ન 3) ક, ્,, ર, ો, ધ

He usado el código como a continuación:

 NSMutableArray *array = [[NSMutableArray alloc]init]; for (int i=0; i<strElement.length; i++) { NSString *str = [strElement substringWithRange:NSMakeRange(i, 1)]; [array addObject:str]; } NSLog(@"%@",array); 

Tomemos strElement como "ક્રોધ", entonces obtuve salida como esta ક , ્ , ર , ો , ધ Pero necesito una salida como esta ક્રો,ધ

¿Hay alguna forma de que pueda get el resultado deseado? ¿Algún método disponible directamente en iOS o necesito crearlo yo mismo de alguna manera o idea de cómo crearlo?

Cualquier ayuda es apreciada

Su código está asumiendo que cada carácter de la cadena es un único valor unichar . Pero no lo es. Algunos de los caracteres Unicode están compuestos por múltiples valores unichar .

La solución es utilizar rangeOfComposedCharacterSequenceAtIndex: lugar de substringWithRange: con una longitud de range fija de 1.

 NSString *strElement = @"ઐતિહાસિક પ્રકાશન ક્રોધ"; NSMutableArray *array = [[NSMutableArray alloc]init]; NSInteger i = 0; while (i < strElement.length) { NSRange range = [strElement rangeOfComposedCharacterSequenceAtIndex:i]; NSString *str = [strElement substringWithRange:range]; [array addObject:str]; i = range.location + range.length; } // Log the results. Build the results into a mutable string to avoid // the ugly Unicode escapes shown by simply logging the array. NSMutableString *res = [NSMutableString string]; for (NSString *str in array) { if (res.length) { [res appendString:@", "]; } [res appendString:str]; } NSLog(@"Results: %@", res); 

Esto produce:

Resultados: ઐ, તિ, હા, સિ, ક,, પ્ર, કા, શ, ન,, ક્રો, ધ