Abreviação para testar se um object existe em uma matriz para Swift?

Atualmente, tenho uma matriz de objects como esta:

var myArr = [ MyObject(name: "Abc", description: "Lorem ipsum 1."), MyObject(name: "Def", description: "Lorem ipsum 2."), MyObject(name: "Xyz", description: "Lorem ipsum 3.") ] 

Eu estou testando se um object existe antes de continuar assim:

 let item = myArr.filter { $0.name == "Def" }.first if item != nil { // Do something... } 

Mas estou procurando uma maneira mais curta de fazer isso, já que estou fazendo muito isso. Eu gostaria de fazer algo assim, mas é inválido:

 if myArr.contains { $0.name == "Def" } { // Do something... } 

Existe alguma syntax abreviada que estou perdendo ou uma maneira melhor de fazer isso?

Por que não usar a function incorporada contains() ? Vem em dois sabores

 func contains(seq: S, predicate: @noescape (S.Generator.Element) -> L) -> Bool func contains(seq: S, x: S.Generator.Element) -> Bool 

e o primeiro toma um predicado como argumento.

 if contains(myArr, { $0.name == "Def" }) { println("yes") } 

Atualização: A partir do Swift 2, ambas as funções globais contains() foram substituídas pelos methods de extensão de protocolo :

 extension SequenceType where Generator.Element : Equatable { func contains(element: Self.Generator.Element) -> Bool } extension SequenceType { func contains(@noescape predicate: (Self.Generator.Element) -> Bool) -> Bool } 

e o primeiro (baseado em predicado) é usado como:

 if myArr.contains( { $0.name == "Def" }) { print("yes") } 

Swift 3:

 if myArr.contains(where: { $0.name == "Def" }) { print("yes") } 

IMHO para alcançar o comportamento desejado, você teria que criar uma class de extensão para o array que seria algo como:

 extension Array { func contains(test: (T) -> Bool, action: (T) -> Void) { let filtered = self.filter(test) if(filtered.is​Empty) { action(filtered) } } } 

Eu não tenho xcode na minha frente, então peço desculpas se eu tiver um erro de syntax. No entanto, se você estiver usando o frequentemente você pode escrevê-lo da seguinte forma

 myArr.contains({ $0.name == "Def"}) { // Do something... } 

Eu mudaria o nome para evitar confusão no seu código.