2015-04-23 16 views

Trả lời

6

Điều này là do Swift sử dụng các cụm đồ thị mở rộng. Swift thấy biểu tượng mặt cười là một ký tự, nhưng phương thức NSString coi nó là hai ký tự Unicode, mặc dù chúng được "kết hợp" và biểu diễn một biểu tượng duy nhất.

6

Tôi nghĩ rằng documentation nói nó tốt nhất:

Nhân vật đếm được trả về bởi các tính (_ :) chức năng không phải là lúc nào cũng là giống như thuộc tính độ dài của một NSString có chứa các ký tự giống nhau. Độ dài của NSString dựa trên số lượng đơn vị mã 16 bit trong biểu diễn UTF-16 của chuỗi chứ không phải số lượng các chuỗi đồ thị mở rộng Unicode trong chuỗi. Để phản ánh thực tế này, thuộc tính độ dài từ NSString được gọi là utf16Count khi nó được truy cập trên một giá trị Chuỗi Swift.

+3

'utf16Count' không còn tồn tại trong Swift 1.2, bây giờ là' count (str.utf16) '. –

Các vấn đề liên quan