比较Swift中的字符串对象

时间:2014-12-06 16:45:06

标签: swift compare

每个人都知道你可以使用==运算符来比较事物。

if (stringValue1 == stringValue2)

如果在Objective-C中执行此操作,程序将检查这些对象是否相同,如果两个字符串都包含相同的文本。如果要比较文本值,则需要使用compare-Method。

据我所知,Swift中的相同代码会比较文本值。那很好。许多编程语言都是这样的。但是我需要做些什么来检查这两个值是否引用同一个对象?

2 个答案:

答案 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?
    ^