Arrays 自定义对象的Swift 2.0筛选数组-无法调用';过滤器';使用列表类型的参数

Arrays 自定义对象的Swift 2.0筛选数组-无法调用';过滤器';使用列表类型的参数,arrays,swift,class,object,filter,Arrays,Swift,Class,Object,Filter,正在尝试筛选从NSObject继承的自定义对象类型ParseEmployee的数组 您知道是什么原因导致此错误吗?您应该能够按以下方式运行: filtered = arrayOfEmployees.filter { // filter them here } filtered = arrayOfEmployees.filter { employee in // filter here } $0将是数组的成员,您只需确保大括号返回true或false Bool,您不需要在此处执行(employ

正在尝试筛选从NSObject继承的自定义对象类型ParseEmployee的数组


您知道是什么原因导致此错误吗?

您应该能够按以下方式运行:

filtered = arrayOfEmployees.filter { // filter them here }
filtered = arrayOfEmployees.filter { employee in // filter here }
$0将是数组的成员,您只需确保大括号返回true或false Bool,您不需要在此处执行(employee)->Bool

如果您需要员工,只需执行以下操作:

filtered = arrayOfEmployees.filter { // filter them here }
filtered = arrayOfEmployees.filter { employee in // filter here }

过滤器关闭必须返回一个
Bool

差不多吧

filtered = arrayOfEmployees.filter { return true }
filtered = arrayOfEmployees.filter { $0.isManager }
现在这没有用了,因为没有任何东西被过滤,但它修复了您的错误。假设您的
ParseEmployee
有一个属性
isManager:Bool
。然后你可以做类似的事情

filtered = arrayOfEmployees.filter { return true }
filtered = arrayOfEmployees.filter { $0.isManager }

考虑以下示例:

struct MyEmployee {
    var employeeId : Int
    var employeeName : String
    var employeeAge : Int
    var employeeGender : String

    init(_ id: Int, _ name: String, _ age: Int, _ gender: String) {
        employeeId = id
        employeeName = name
        employeeAge = age
        employeeGender = gender
    }
}

var arrayOfEmployees : [MyEmployee] = [MyEmployee(1, "John", 28, "Male"), MyEmployee(2, "Sarah", 35, "Female"), MyEmployee(3, "Christine", 24, "Female")]

var filtered = arrayOfEmployees.filter {employee in employee.employeeAge < 30 }
print(filtered) // Employee objects John and Christine

我的问题是,我从另一个类复制并粘贴了“筛选”数组,但没有将其更改为要筛选的相应类类型。我将筛选数组更改为正确的类,这解决了错误。

我通过执行'filtered=arrayOfEmployees.filter{employee in}'得到了相同的错误,只需从函数返回一些内容,编译器应该停止抱怨。。。有时,当使用闭包时,错误消息不是很精确(实际上总是),虽然这不是修复方法,但这帮助我解决了问题。谢谢你现在就开始。如果你不介意我问的话,解决办法是什么?