Sebenarnya, rasanya seperti swift sedang berusaha mempromosikan string agar diperlakukan kurang seperti objek dan lebih seperti nilai. Namun ini tidak berarti di bawah kap swift tidak memperlakukan string sebagai objek, karena saya yakin Anda semua memperhatikan bahwa Anda masih dapat memanggil metode pada string dan menggunakan propertinya.
Sebagai contoh:-
//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)")
Dalam objectC Anda bisa meneruskan referensi ke objek string melalui variabel, di atas metode panggilan di atasnya, yang cukup banyak menetapkan fakta bahwa string adalah objek murni.
Ini adalah tangkapan ketika Anda mencoba untuk melihat String sebagai objek, dengan cepat Anda tidak dapat melewatkan objek string dengan referensi melalui variabel. Swift akan selalu memberikan salinan string yang baru. Oleh karena itu, string lebih dikenal sebagai tipe nilai di swift. Faktanya, dua string literal tidak akan identik (===). Mereka diperlakukan sebagai dua salinan berbeda.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
Seperti yang dapat Anda lihat, kita mulai melepaskan diri dari cara konvensional menganggap string sebagai objek dan memperlakukannya lebih seperti nilai. Oleh karena itu .isEqualToString yang diperlakukan sebagai operator identitas untuk objek string tidak lebih valid karena Anda tidak akan pernah bisa mendapatkan dua objek string yang identik di Swift. Anda hanya dapat membandingkan nilainya, atau dengan kata lain memeriksa kesetaraan (==).
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
Ini menjadi lebih menarik ketika Anda melihat ketidakmampuan objek string dalam cepat. Tapi itu pertanyaan lain, hari lain. Sesuatu yang mungkin harus Anda perhatikan, karena itu sangat menarik. :) Harapan yang membersihkan beberapa kebingungan. Bersulang!
===
adalah operator identitas sedangkan operator==
kesetaraan (dengan panggilan defaultisEqual:
pada NSObject dan subkelasnya)