¿Por qué los emoji como 👩👩👧👦 se comportan de manera extraña en cadenas de Swift?
¡Hola a todos! Estoy escribiendo una aplicación iOS que procesa textos con emoji. Y me encontré con un comportamiento extraño de Swift al trabajar con emoji compuestos, especialmente con familias y banderas.
Por ejemplo, tengo una cadena `let family = "👩👩👧👦"`. Espero que `family.count` devuelva 1 (¡ya que es un solo emoji!), pero en su lugar obtengo 7. Y si intento obtener el primer carácter con `family.first`, no se devuelve el emoji completo, sino un carácter extraño.
Aquí está el código que me confundió:
```swift
let family = "👩👩👧👦"
print(family.count) // 7
print(family.utf8.count) // 25
print(family.utf16.count) // 11
print(family.unicodeScalars.count) // 7
print(family.first) // Optional("👩")
```
Esperaba que count fuera 1 y que first devolviera el emoji completo. ¿Por qué Swift cuenta estos caracteres de manera diferente? ¿Cómo trabajar correctamente con estos emoji en Swift? Me interesa especialmente cómo truncar cadenas que contienen estos emoji compuestos de manera segura para no romperlos en partes.