Tatsächlich fühlt es sich so an, als würde Swift versuchen, Strings so zu fördern, dass sie weniger wie Objekte als vielmehr wie Werte behandelt werden. Dies bedeutet jedoch nicht, dass Swift unter der Haube Strings nicht als Objekte behandelt, da Sie alle sicher bemerkt haben, dass Sie weiterhin Methoden für Strings aufrufen und deren Eigenschaften verwenden können.
Beispielsweise:-
//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)")
In objectC können Sie den Verweis auf ein Zeichenfolgenobjekt über eine Variable übergeben, zusätzlich zu den aufrufenden Methoden, wodurch die Tatsache, dass Zeichenfolgen reine Objekte sind, ziemlich genau belegt wird.
Hier ist der Haken, wenn Sie versuchen, String als Objekte zu betrachten. In Kürze können Sie ein String-Objekt nicht als Referenz durch eine Variable übergeben. Swift wird immer eine brandneue Kopie der Zeichenfolge übergeben. Daher werden Zeichenfolgen in Swift häufiger als Werttypen bezeichnet. Tatsächlich sind zwei Zeichenfolgenliterale nicht identisch (===). Sie werden als zwei verschiedene Kopien behandelt.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
Wie Sie sehen, beginnen wir, uns von der herkömmlichen Art, Zeichenfolgen als Objekte zu betrachten und sie eher wie Werte zu behandeln, zu lösen. Daher ist .isEqualToString, das als Identitätsoperator für Zeichenfolgenobjekte behandelt wurde, nicht mehr gültig, da in Swift niemals zwei identische Zeichenfolgenobjekte abgerufen werden können. Sie können nur den Wert vergleichen oder mit anderen Worten auf Gleichheit prüfen (==).
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
Dies wird interessanter, wenn Sie die Veränderbarkeit von String-Objekten in Kürze betrachten. Aber das ist eine andere Frage, ein anderer Tag. Etwas, das Sie wahrscheinlich untersuchen sollten, weil es wirklich interessant ist. :) Hoffe das klärt etwas Verwirrung auf. Prost!
===
ist Identitätsoperatoren, während==
Gleichheitsoperator ist (standardmäßig AufrufisEqual:
von NSObject und seinen Unterklassen)