小编典典

如何使用array.filter基于属性过滤类对象?

swift

我正在尝试过滤一个类的实例数组。我想要一个由类属性之一过滤的新数组。Swift过滤器在此用例中的工作方式无法完全理解。

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 )

阅读 337

收藏
2020-07-07

共1个答案

小编典典

这应该工作…

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

您可能需要使您的枚举符合等式才能进行此比较。

$ 0是一个未命名的参数,您也可以这样做。

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

编辑:我刚刚测试了它,它的工作而不会使枚举符合等于。我认为您只需要在枚举带有参数时执行此操作。

2020-07-07