2014-12-06 83 views
0

大家都知道你可以使用==运算符来比较事物。在Swift中比较字符串对象

if (stringValue1 == stringValue2) 

如果你这样做在Objective-C程序将检查这些对象是相同的,如果没有这两个字符串确实包含相同的文字。如果您想比较文本值,则需要使用compare-Method。

据我了解,Swift中的相同代码不会比较文本值。那很好。很多编程语言都是这样工作的。但是,我需要做什么来检查这两个值是否指向同一个对象?

回答

3

对于类类型的对象,您可以通过===运算符来检查两个对象是否引用同一个实例。但是,你特别要求字符串。快速字符串不是班级类型 - 它们是===运算符将不会为它们工作 - 就像它不适用于整数一样。所以你的问题的答案 - 如何检查两个字符串是否是相同的实例 - 在Swift中是:这是不可能的。在Swift中使用字符串时,只能使用正常运算符,如==等。

+0

呃,没错!我是一个说===的白痴。删除那个不好的答案。 – 2014-12-06 17:00:50

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