Swift:如何检查一个对象是否在数组中?
问题描述:
在Swift中,如果我想检查一个数组中是否有一个对象(比字符串更复杂),我该怎么做?在这样的页面上找到的答案(How to check if an element is in an array)似乎不适用于我的情况。例如,如果我有一个狗的对象类,其中每个狗都有多个属性(如体重,颜色,品种等)......我创建了该类的几个实例,并将它们附加到一个单独的数组...我怎么才能检查一个特定的对象是否在该数组中?Swift:如何检查一个对象是否在数组中?
if singleDogInstance is in arrayOfDogs {
//do something
}
答
可以,只要使用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)
由于'Dog'是你可能会首先检查_reference_平等一类:'赖氨酸= ==在'=='中执行rhs' –
非常好的一点! +1 –