2017-03-07 116 views
-1

我想過濾一個類的實例的數組。我想要一個新的數組通過類屬性過濾。不能完全擺脫Swift過濾器在這個用例中的工作方式。如何使用array.filter來過濾基於屬性的類對象?

enum Gender { 
    case male,female 
} 

class Person { 
    let name:String 
    let gender:Gender 
    init(name:String,gender:Gender) { 
     self.name = name 
     self.gender = gender 
    } 
} 


let people = [Person.init(name: "James", gender: .male), 
       Person.init(name: "John", gender: .male), 
       Person.init(name: "Sally", gender: .female) 
      ] 

let males = people.filter(something) 

回答

2

這應該工作...

let males = people.filter({ $0.gender == .male })

您可能需要讓你的枚舉comform到equatable做這種比較。

的$ 0是一個未命名的參數,你也可以做..

let males = people.filter({ person in return person.gender == .male })

編輯:我剛剛測試了這一點,它的工作未做枚舉符合equatable。我認爲你只需要這樣做,當枚舉帶參數。

+0

冠軍。非常感謝。 –

相關問題