In realtà, sembra che swift stia cercando di promuovere le stringhe da trattare meno come oggetti e più come valori. Tuttavia, ciò non significa che sotto il cofano swift non tratti le stringhe come oggetti, come sicuramente avrete notato tutti che potete ancora invocare metodi sulle stringhe e usare le loro proprietà.
Per esempio:-
//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 potresti passare il riferimento a un oggetto stringa attraverso una variabile, oltre ai metodi di chiamata su di esso, il che stabilisce praticamente il fatto che le stringhe sono oggetti puri.
Ecco il problema quando provi a guardare String come oggetti, in breve tempo non puoi passare un oggetto stringa per riferimento attraverso una variabile. Swift passerà sempre una nuova copia della stringa. Quindi, le stringhe sono più comunemente conosciute come tipi di valore in rapido. In effetti, due letterali stringa non saranno identici (===). Sono trattati come due copie diverse.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
Come puoi vedere, stiamo iniziando a staccarci dal modo convenzionale di pensare le stringhe come oggetti e di trattarle più come valori. Quindi .isEqualToString che è stato trattato come un operatore di identità per oggetti stringa non è più valido in quanto non è possibile ottenere due oggetti stringa identici in Swift. Puoi solo confrontare il suo valore o in altre parole verificare l'uguaglianza (==).
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
Ciò diventa più interessante quando si osserva la mutabilità degli oggetti stringa in un attimo. Ma questo è per un'altra domanda, un altro giorno. Qualcosa che dovresti probabilmente esaminare, perché è davvero interessante. :) Spero che chiarisca un po 'di confusione. Saluti!
===
è un operatore di identità mentre un operatore di==
uguaglianza (per impostazione predefinita chiamaisEqual:
NSObject e le sue sottoclassi)