2015-04-23 14 views

Odpowiedz

6

Dzieje się tak dlatego, że Swift wykorzystuje klastry Extended Grapheme. Swift postrzega buźkę jako jedną postać, ale metoda NSString traktuje ją jako dwie postacie Unicode, chociaż są one "połączone" i reprezentują pojedynczy symbol.

6

myślę documentation mówi to najlepiej:

Charakter Liczba zwrócony przez count (_ :) funkcja nie zawsze jest tak samo jak właściwość length NSString, która zawiera te same znaki. Długość NSString jest oparta na liczbie 16-bitowych jednostek kodowych w ciągu znaków UTF-16, a nie na liczbie rozszerzonych klastrów Unicode w ciągu znaków. Aby odzwierciedlić ten fakt, właściwość length z NSString nazywa się utf16Count, gdy jest on dostępny dla wartości Swift String.

+3

'utf16Count' już nie istnieje w Swift 1.2, teraz jest to' count (str.utf16) '. –