En realidad, parece que Swift está tratando de promover cadenas para ser tratadas menos como objetos y más como valores. Sin embargo, esto no significa que bajo el capó veloz no trate las cadenas como objetos, ya que estoy seguro de que todos notaron que aún pueden invocar métodos en cadenas y usar sus propiedades.
Por ejemplo:-
//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)")
En objectC, podría pasar la referencia a un objeto de cadena a través de una variable, además de los métodos de llamada, lo que prácticamente establece el hecho de que las cadenas son objetos puros.
Aquí está el truco cuando intentas mirar a String como objetos, en forma rápida no puedes pasar un objeto de cadena por referencia a través de una variable. Swift siempre pasará una copia nueva de la cadena. Por lo tanto, las cadenas se conocen más comúnmente como tipos de valor en swift. De hecho, dos literales de cadena no serán idénticos (===). Se tratan como dos copias diferentes.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
Como puede ver, estamos comenzando a romper con la forma convencional de pensar las cadenas como objetos y tratarlos más como valores. Por lo tanto, .isEqualToString, que fue tratado como un operador de identidad para los objetos de cadena, ya no es válido, ya que nunca puede obtener dos objetos de cadena idénticos en Swift. Solo puede comparar su valor o, en otras palabras, verificar la igualdad (==).
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
Esto se vuelve más interesante cuando nos fijamos en la mutabilidad de los objetos de cadena en Swift. Pero eso es para otra pregunta, otro día. Algo que probablemente deberías considerar, porque es realmente interesante. :) Espero que eso aclare algo de confusión. ¡Salud!
===
es operadores de identidad mientras que==
es operador de igualdad (por defecto llamaisEqual:
a NSObject y sus subclases)