Swift:如何查看对象是否在数组中?

时间:2015-07-21 21:52:45

标签: arrays swift object find

在Swift中,如果我想检查数组中是否有一个对象(比一个字符串更复杂的对象),我该怎么做?在这样的页面上找到的答案(How to check if an element is in an array)似乎不适合我。

例如,如果我有一个Dogs的对象类,其中每只狗都有多个属性(如重量,颜色,品种等)......我创建了该类的几个实例并将它们附加到单个数组中...那我怎么能检查一下这个数组中是否有某个物体?

if singleDogInstance is in arrayOfDogs {
    //do something
}

1 个答案:

答案 0 :(得分:1)

只要数组中包含的元素符合contains协议,您就可以使用Swift库中的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

当然,在Swift 2.0中,contains函数不再是全局函数,而是Array的一部分:

arrayOfDogs.contains( singleDogInstance )