2014-12-06 102 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? 
    ^