Por que emojis como 👩👩👧👦 se comportam de forma estranha em strings Swift?
Olá a todos! Estou escrevendo um aplicativo iOS que processa textos com emojis. E me deparei com um comportamento estranho do Swift ao trabalhar com emojis compostos, especialmente famílias e bandeiras.
Por exemplo, tenho a string `let family = "👩👩👧👦"`. Eu esperava que `family.count` retornasse 1 (já que é um único emoji!), mas em vez disso recebo 7. E se eu tentar obter o primeiro caractere com `family.first`, ele retorna não o emoji inteiro, mas um caractere estranho.
Aqui está o código que me confundiu:
```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("👩")
```
Eu esperava que count fosse 1 e first retornasse o emoji inteiro. Por que o Swift conta esses caracteres de forma diferente? Como trabalhar corretamente com esses emojis em Swift? Estou especialmente interessado em como cortar strings com segurança que contenham esses emojis compostos, para não quebrá-los em partes.