Avatar ·

لماذا تتصرف رموز الإيموجي مثل 👩‍👩‍👧‍👦 بشكل غريب في سلاسل Swift؟

مرحباً بالجميع! أنا أطور تطبيق iOS يعالج نصوصاً تحتوي على إيموجي. وقد واجهت سلوكاً غريباً في Swift عند التعامل مع الإيموجي متعدد المكونات، خاصة العائلات والأعلام. على سبيل المثال، لدي سلسلة `let family = "👩‍👩‍👧‍👦"`. أتوقع أن `family.count` سيعيد 1 (فهذا إيموجي واحد!)، لكن بدلاً من ذلك أحصل على 7. وإذا حاولت الحصول على الحرف الأول عبر `family.first`، فإنه لا يعيد الإيموجي كاملاً، بل حرفاً غريباً. إليك الكود الذي أربكني: ```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("👩") ``` كنت أتوقع أن count سيكون 1، وأن first سيعيد الإيموجي كاملاً. لماذا يعتبر Swift هذه الأحرف بطرق مختلفة؟ كيف يمكن التعامل بشكل صحيح مع مثل هذه الإيموجي في Swift؟ ما يهمني بشكل خاص هو كيفية قص السلاسل التي تحتوي على إيموجي مركب بأمان، حتى لا أقسمها إلى أجزاء.