Arrays 自定义对象的Swift 2.0筛选数组-无法调用';过滤器';使用列表类型的参数
正在尝试筛选从NSObject继承的自定义对象类型ParseEmployee的数组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
您知道是什么原因导致此错误吗?您应该能够按以下方式运行:
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}'得到了相同的错误,只需从函数返回一些内容,编译器应该停止抱怨。。。有时,当使用闭包时,错误消息不是很精确(实际上总是),虽然这不是修复方法,但这帮助我解决了问题。谢谢你现在就开始。如果你不介意我问的话,解决办法是什么?