2017-03-07 160 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

冠军。非常感谢。 –

相关问题