사실, 스위프트가 문자열을 객체와 같은 가치로 취급하도록 장려하려고하는 것처럼 느낍니다. 그러나 이것이 바로 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에서 변수를 통해 문자열 객체에 대한 참조를 전달할 수 있습니다. 변수는 메서드를 호출 할 때 문자열이 순수한 객체라는 사실을 거의 확립합니다.
다음은 문자열을 객체로 보려고 할 때의 포착입니다. 신속하게 변수를 통해 문자열 객체를 참조로 전달할 수 없습니다. Swift는 항상 새로운 문자열 사본을 전달합니다. 따라서 문자열은 더 빨리 값 유형으로 알려져 있습니다. 실제로 두 문자열 리터럴은 동일하지 않습니다 (===). 그들은 두 개의 다른 사본으로 취급됩니다.
let curious = ("ca" === "ca")
println("This will be false.. and the answer is..\(curious)")
보시다시피 우리는 문자열을 객체로 생각하고 더 가치있는 것으로 취급하는 기존의 방식에서 벗어나기 시작했습니다. 따라서 Swift에서 두 개의 동일한 문자열 객체를 얻을 수 없으므로 문자열 객체의 ID 연산자로 처리 된 .isEqualToString은 더 이상 유효하지 않습니다. 값만 비교하거나 다른 말로하면 평등 (==)을 확인하십시오.
let NotSoCuriousAnyMore = ("ca" == "ca")
println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
문자열 객체의 가변성을 신속하게 볼 때 더 흥미로워집니다. 그러나 그것은 또 다른 질문, 다른 날에 대한 것입니다. 당신이 아마 살펴 봐야 할 것이 정말로 흥미를 유발합니다. :) 희망은 혼란을 없애줍니다. 건배!
===
==
NS 연산자isEqual:
와 그 서브 클래스에 대한 기본 호출 인 등호 연산자 인 반면 ID 연산자