2015-07-21 164 views
0

在Swift中,如果我想檢查一個數組中是否有一個對象(比字符串更復雜),我該怎麼做?在這樣的頁面上找到的答案(How to check if an element is in an array)似乎不適用於我的情況。例如,如果我有一個狗的對象類,其中每個狗都有多個屬性(如體重,顏色,品種等)......我創建了該類的幾個實例,並將它們附加到一個單獨的數組...我怎麼才能檢查一個特定的對象是否在該數組中?Swift:如何檢查一個對象是否在數組中?

if singleDogInstance is in arrayOfDogs { 
    //do something 
} 

回答

1

可以,只要使用contains功能從斯威夫特庫作爲包含在數組中的元素符合Equitable協議,這基本上需要你創建一個全球性的==的操作,比較類的兩個實例。

struct Dog: Equatable { 
    let name: String 
} 

func ==(lhs: Dog, rhs: Dog) -> Bool { 
    return lhs.name == rhs.name 
} 

let arrayOfDogs = [ Dog(name:"Panzer"), Dog(name:"Bentley"), Dog(name:"Ewok") ] 
let singleDogInstance = arrayOfDogs[0] 
print(contains(arrayOfDogs, singleDogInstance)) // True 

let someOtherDog = Dog(name:"Oliver") 
print(contains(arrayOfDogs, singleDogInstance)) // False 

,當然還有,在雨燕2.0的contains功能不再是全球性的,但部分Array

arrayOfDogs.contains(singleDogInstance) 
+2

由於'Dog'是你可能會首先檢查_reference_平等一類:'賴氨酸= ==在'=='中執行rhs' –

+0

非常好的一點! +1 –

相關問題