2015-07-21 168 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 –

相关问题