実際、swiftは文字列をオブジェクトのように扱うのではなく、値のように扱おうとしているようです。ただし、これは内部でSwiftが文字列をオブジェクトとして処理しないことを意味するものではありません。文字列に対してメソッドを呼び出してそのプロパティを使用できることに気づいたことでしょう。
例えば:-
//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)")
objectCでは、メソッドの呼び出しに加えて、変数を介して文字列オブジェクトへの参照を渡すことができます。これにより、文字列が純粋なオブジェクトであるという事実がほぼ確立されます。
Stringをオブジェクトとして見ようとするときの注意点を以下に示します。迅速に、変数を介して文字列オブジェクトを参照渡しすることはできません。Swiftは常に文字列の新しいコピーを渡します。したがって、文字列はSwiftでは値型としてより一般的に知られています。実際、2つの文字列リテラルは同一ではありません(===)。それらは2つの異なるコピーとして扱われます。
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
ご覧のとおり、文字列をオブジェクトとして考え、値のように扱う従来の方法から脱却し始めています。したがって、Swiftでは2つの同一の文字列オブジェクトを取得できないため、文字列オブジェクトのID演算子として扱われていた.isEqualToStringは無効になります。比較できるのはその値のみです。つまり、等価性(==)を確認します。
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
これは、文字列オブジェクトの可変性をすばやく見ると、さらに興味深いものになります。しかし、それは別の質問のための別の日です。あなたがおそらく調査すべき何かは、それを本当に興味深いものにします。:)いくつかの混乱が解消されることを願っています。乾杯!
===
は同一性演算子==
ですが、等値演算子です(デフォルトisEqual:
ではNSObjectとそのサブクラスの呼び出し)