Trên thực tế, có cảm giác như swift đang cố gắng thúc đẩy các chuỗi để được đối xử ít giống như các đối tượng và giống như các giá trị hơn. Tuy nhiên, điều này không có nghĩa là swift không xử lý chuỗi như các đối tượng, vì chắc chắn tất cả các bạn đều nhận thấy rằng bạn vẫn có thể gọi các phương thức trên chuỗi và sử dụng các thuộc tính của chúng.
Ví dụ:-
//example of calling method (String to Int conversion)
let intValue = ("12".toInt())
println("This is a intValue now \(intValue)")
//example of using properties (fetching uppercase value of string)
let caUpperValue = "ca".uppercaseString
println("This is the uppercase of ca \(caUpperValue)")
Trong objectC, bạn có thể chuyển tham chiếu đến một đối tượng chuỗi thông qua một biến, bên trên các phương thức gọi trên nó, điều này khá nhiều cho thấy thực tế là các chuỗi là các đối tượng thuần túy.
Đây là cách bắt khi bạn cố gắng xem String dưới dạng các đối tượng, trong swift bạn không thể truyền đối tượng chuỗi bằng cách tham chiếu thông qua một biến. Swift sẽ luôn vượt qua một bản sao hoàn toàn mới của chuỗi. Do đó, các chuỗi thường được gọi là các loại giá trị trong swift. Trong thực tế, hai chuỗi ký tự sẽ không giống nhau (===). Chúng được coi là hai bản sao khác nhau.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
Như bạn có thể thấy, chúng ta đang bắt đầu phá vỡ lối suy nghĩ thông thường về các chuỗi như các đối tượng và coi chúng giống như các giá trị hơn. Do đó .isEqualToString được coi là toán tử nhận dạng cho các đối tượng chuỗi không còn hợp lệ vì bạn không bao giờ có thể có được hai đối tượng chuỗi giống hệt nhau trong Swift. Bạn chỉ có thể so sánh giá trị của nó hoặc nói cách khác là kiểm tra sự bằng nhau (==).
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
Điều này trở nên thú vị hơn khi bạn nhìn vào khả năng biến đổi của các đối tượng chuỗi trong swift. Nhưng đó là cho một câu hỏi khác, một ngày khác. Một cái gì đó có lẽ bạn nên xem xét, vì nó thực sự thú vị. :) Hy vọng rằng sẽ xóa một số nhầm lẫn. Chúc mừng!
===
là toán tử nhận dạng trong khi đó==
là toán tử đẳng thức (theo mặc định gọiisEqual:
NSObject và các lớp con của nó)