每个人都知道你可以使用==运算符来比较事物。
if (stringValue1 == stringValue2)
如果在Objective-C中执行此操作,程序将检查这些对象是否相同,如果两个字符串都包含相同的文本。如果要比较文本值,则需要使用compare-Method。
据我所知,Swift中的相同代码会比较文本值。那很好。许多编程语言都是这样的。但是我需要做些什么来检查这两个值是否引用同一个对象?
答案 0 :(得分:3)
对于类类型的对象,您可以使用===
运算符来检查两个对象是否引用同一个实例。但是,你具体询问字符串。 swift中的字符串不是类类型 - 它们是值。 ===
运算符不适用于它们 - 就像它对整数不起作用一样。所以你的问题的答案 - 如何检查两个字符串是否是同一个实例 - 在Swift中是:它是不可能的。使用Swift中的字符串,您应该只使用==
等常规运算符。
答案 1 :(得分:0)
您不能将字符串作为值类型,而不是对象类型。 ===
运算符仅适用于AnyObject
的对象类型,但String
的类型为Any
。
6> "abc" === "abc"
repl.swift:6:1: error: type 'String' does not conform to protocol 'AnyObject'
"abc" === "abc"
^
Swift.lhs:1:5: note: in initialization of parameter 'lhs'
let lhs: AnyObject?
^
6> var str : String = "abc"
str: String = "abc"
7> str === str
repl.swift:7:1: error: type 'String' does not conform to protocol 'AnyObject'
str === str
^
Swift.lhs:1:5: note: in initialization of parameter 'lhs'
let lhs: AnyObject?
^